以下是我的代碼示例: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