PHP addcslashes() 函数的手册页给出了以下示例:addcslashes($not_escaped, "\0..\37!@\177..\377");转义 0 到 31 之间的所有 ASCII 字符(= 037 八进制)。用户建议进行以下改进:addcslashes($not_escaped, "\0..\37!@\@\177..\377");“保护原始的、无辜的反斜杠免受 stripcslashes 的侵害”。是否有关于参数格式的文档charlist?!@具体来说,第一个例子中的序列和!@\@第二个中的序列的解释是什么?
1 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
我花了一些时间才找到明显的东西。
!@ 不是特殊序列,它们是应该转义的单个字符。addcslashes 的唯一特殊输入是用于范围的char..char 。
\0..\37!@\177..\377 转义范围0..\37,字符! , 字符@和范围\177..\377
!@\@
在我看来, 建议无效(不干净)。\@
在 php 中没有被屏蔽(它后面没有像 \n 那样的特殊含义)并且它将是相同的。所以 \ 和 @(第二次)被添加到字符列表中。这背后没有魔法,也没有特殊的顺序。当你想转义所有不可打印的字符(0-37 和 177+)时,@、!、\ 的干净解决方案是:
"\0..\37!@\\\177..\377"
- 1 回答
- 0 关注
- 103 浏览
添加回答
举报
0/150
提交
取消