addcslashes(),charlist参数 - 为什么某些字符会被转换?

时间:2018-03-23 08:55:12

标签: php php-7 php-5.3

addcslashes($str, $charlist)

来自http://php.net/manual/en/function.addcslashes.php

  

“如果charlist包含字符\ n,\ r \ n等,则转换为   类似C的样式,而其他非字母数字字符使用ASCII码   低于32且高于126转换为八进制表示。“

1)因此,对于第一部分,这将是\ 0,\ a,\ b,\ f,\ n,\ r,\ t,\ t,\ v。 C样式转换的含义是什么(我可以在网上检查的任何网址),以及为什么要进行转换?

2)为什么“ASCII码低于32且高于126的其他非字母数字字符”被转换为八进制表示?

1 个答案:

答案 0 :(得分:1)

如果你这样做:

echo addcslashes("abc\nfoo\1bar", "\n\1")

输出是:

abc\nfoo\001bar

目的是以C和PHP程序员可能编写文字的格式返回字符串。对于换行,我们通常会写\n而非\012,而不是\e代表Escape,\033而不是\r来回车等,以便返回了什么。但是大多数其他非印刷字符都没有短暂的转义序列,因此它们会以八进制转义返回。