PHP addcslashes() 函数语法

PHP addcslashes() 函数的手册页给出了以下示例:

addcslashes($not_escaped, "\0..\37!@\177..\377");

转义 0 到 31 之间的所有 ASCII 字符(= 037 八进制)。用户建议进行以下改进:

addcslashes($not_escaped, "\0..\37!@\@\177..\377");

“保护原始的、无辜的反斜杠免受 stripcslashes 的侵害”。

是否有关于参数格式的文档charlist!@具体来说,第一个例子中的序列和!@\@第二个中的序列的解释是什么?


弑天下
浏览 104回答 1
1回答

红糖糍粑

我花了一些时间才找到明显的东西。!@ 不是特殊序列,它们是应该转义的单个字符。addcslashes 的唯一特殊输入是用于范围的char..char 。\0..\37!@\177..\377 转义范围0..\37,字符! , 字符@和范围\177..\377!@\@在我看来, 建议无效(不干净)。\@在 php 中没有被屏蔽(它后面没有像 \n 那样的特殊含义)并且它将是相同的。所以 \ 和 @(第二次)被添加到字符列表中。这背后没有魔法,也没有特殊的顺序。当你想转义所有不可打印的字符(0-37 和 177+)时,@、!、\ 的干净解决方案是:"\0..\37!@\\\177..\377"
打开App,查看更多内容
随时随地看视频慕课网APP