addcslashes转义大写字母

时间:2016-08-01 10:24:16

标签: php string ascii

以下是我的代码示例:

<?php
   echo addcslashes('ABC','\0..\37');
?>

我的输出是

\A\B\C

根据文档,\0...\37将转义0到31之间的ASCII值。但是我发现ASCII值大于31的大写字母在这里被转义。当我尝试使用小写字母时,它正常工作。

我应该添加什么来使addcslashes功能适用于给定的ASCII字符?

2 个答案:

答案 0 :(得分:2)

使用双引号,以便\ - escapes正常工作:

echo addcslashes('ABC', "\0..\37");

单引号'\0..\37'被解释为\ +范围0..\ +字符37

例如,所有大写字母都在0..\范围内,这就是他们被转义的原因。

答案 1 :(得分:1)

您需要为$charlist参数使用双引号:

echo addcslashes('ABC', "\0..\37");

使用Resample API反斜杠不代表特殊的字符序列。

另请参阅single quoted string手册。