以下是我的代码示例:addcslashes逃逸大写字母
<?php
echo addcslashes('ABC','\0..\37');
?>
我的输出
\A\B\C
按照文件,\0...\37
会逃脱介于0和31。但我发现的ASCII值ASCII值超过31的大写字母在这里被转义。当我尝试用小写字母时,它正常工作。
我应该添加什么来使addcslashes函数对给定的ASCII字符有效?
以下是我的代码示例:addcslashes逃逸大写字母
<?php
echo addcslashes('ABC','\0..\37');
?>
我的输出
\A\B\C
按照文件,\0...\37
会逃脱介于0和31。但我发现的ASCII值ASCII值超过31的大写字母在这里被转义。当我尝试用小写字母时,它正常工作。
我应该添加什么来使addcslashes函数对给定的ASCII字符有效?
用双引号,这样\
-escapes将正常工作:
echo addcslashes('ABC', "\0..\37");
单引号'\0..\37'
被解释为\
+范围0..\
+字符37
。
例如,所有大写字母将在0..\
范围内,这就是为什么他们被转义。
您需要使用双引号为$charlist
参数:
echo addcslashes('ABC', "\0..\37");
随着single quoted string反斜杠并不代表一个特殊字符序列。
另请参阅double quoted strings的使用说明书。
谢谢。但是为什么单斜杠的工作方式不同 –
因为[单引号](https://secure.php.net/manual/en/language.types.string.php#language.types.string.syntax.single)反斜杠并不代表特殊的字符序列。请参阅[双引号字符串]手册(https://secure.php.net/manual/en/language.types.string.php#language.types.string.syntax.double) – Finwe
PHP不会在单引号中解释转义序列(参见[字符串文档](http://php.net/manual/en/language.types.string.php#language.types.string.syntax.double) )。 – wazelin