首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >addslashes和addcslahes

addslashes和addcslahes
EN

Stack Overflow用户
提问于 2010-05-09 07:09:27
回答 2查看 7K关注 0票数 5

我今天看到了php.net中的地址斜杠和地址斜杠,但我没有弄清楚它们之间的区别,以及这两个文件中转义的字符是什么。

代码语言:javascript
复制
<?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,我得到的值与原始字符串中的值相同。

谁能给我解释清楚这两个的区别和用法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-09 07:22:59

addslashes仅转义

单引号(')、双引号(")、反斜杠()和NUL

您可以使用addcslashes对任意字符集进行转义。

代码语言:javascript
复制
echo addcslashes("where's the party?", "party");

yeilds

哪里是\p\a\r\t\y?

当您需要创建任意控制字符或准备以任意格式传输/使用数据时,这可能很有用。例如,如果要在将用户输入用作正则表达式的一部分之前对其进行转义,则可以执行以下操作

代码语言:javascript
复制
preg_match('/match something here plus' . addcslashes($userInput, ".\\+*?[^]($)") . '/', $foo);

但是,这等同于quotemeta,但这只是一个示例。

更多解释

对于刚接触该方法的人来说,这有时会让人感到困惑,在我看来,这与PHP库的其余部分将第二个参数设置为字符串列表的事实背道而驰,因为这不会出现在库中的其他地方(据我所知)。

对于一些人来说,如果第二个参数是一个数组,它会更有意义,也会更符合要求。

代码语言:javascript
复制
echo addcslashes("where's the party?", array("p", "a", "r", "t", "y"));

它可能会帮助一些人以这种方式可视化它,然后可以转换为以下内容:

代码语言:javascript
复制
echo addcslashes(
    "where's the party?", 
    implode("", array("p", "a", "r", "t", "y"))
);
票数 17
EN

Stack Overflow用户

发布于 2010-05-09 07:16:15

addcslashes用于转义作为第二个参数传递的字符。

如果你尝试阅读the docs of stripcslashes,你会发现“识别类似C的\n,\r ...,八进制和十六进制的表示。”

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2795992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档