我今天看到了php.net中的地址斜杠和地址斜杠,但我没有弄清楚它们之间的区别,以及这两个文件中转义的字符是什么。
<?php
$originaltext = 'This text does NOT contain \\n a new-line!';
$encoded = addcslashes($originaltext, '\\');
$decoded = stripcslashes($encoded);
//$decoded now contains a copy of $originaltext with perfect integrity
echo $decoded; //Display the sentence with it's literal \n intact
?>如果我注释$decoded变量并回显$encoded,我得到的值与原始字符串中的值相同。
谁能给我解释清楚这两个的区别和用法。
发布于 2010-05-09 07:22:59
addslashes仅转义
单引号(')、双引号(")、反斜杠()和NUL
您可以使用addcslashes对任意字符集进行转义。
echo addcslashes("where's the party?", "party");yeilds
哪里是\p\a\r\t\y?
当您需要创建任意控制字符或准备以任意格式传输/使用数据时,这可能很有用。例如,如果要在将用户输入用作正则表达式的一部分之前对其进行转义,则可以执行以下操作
preg_match('/match something here plus' . addcslashes($userInput, ".\\+*?[^]($)") . '/', $foo);但是,这等同于quotemeta,但这只是一个示例。
更多解释
对于刚接触该方法的人来说,这有时会让人感到困惑,在我看来,这与PHP库的其余部分将第二个参数设置为字符串列表的事实背道而驰,因为这不会出现在库中的其他地方(据我所知)。
对于一些人来说,如果第二个参数是一个数组,它会更有意义,也会更符合要求。
echo addcslashes("where's the party?", array("p", "a", "r", "t", "y"));它可能会帮助一些人以这种方式可视化它,然后可以转换为以下内容:
echo addcslashes(
"where's the party?",
implode("", array("p", "a", "r", "t", "y"))
);发布于 2010-05-09 07:16:15
addcslashes用于转义作为第二个参数传递的字符。
如果你尝试阅读the docs of stripcslashes,你会发现“识别类似C的\n,\r ...,八进制和十六进制的表示。”
https://stackoverflow.com/questions/2795992
复制相似问题