【问题标题】:addcslashes(), charlist parameter - Why certain characters get converted?addcslashes(), charlist 参数 - 为什么某些字符会被转换?
【发布时间】:2018-03-23 08:55:11
【问题描述】:
addcslashes($str, $charlist)

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

"如果charlist中包含\n、\r等字符,则转换为 类似 C 的样式,而其他非字母数字字符带有 ASCII 代码 低于 32 和高于 126 转换为八进制表示。"

1) 所以这将是 \0, \a, \b, \f, \n, \r, \t, \v 直到第一部分。类 C 样式转换是什么意思(我可以在网上查到的任何 url),为什么会发生这种转换?

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

【问题讨论】:

  • 1) 这些特殊字符的类C风格转换是什么。转换后它们会是什么? 2) 至于 ASCII 码(低于 32 和高于 126) - 这就像“157”(一个八进制符号,存在)和前面的斜线?我只是不明白解释中的这一部分。为什么会发生转换?

标签: php php-7 php-5.3


【解决方案1】:

如果你这样做:

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

输出是:

abc\nfoo\001bar

目的是以 C 和 PHP 程序员可能编写的文字格式返回字符串。我们通常为换行写\n 而不是\012,为Escape 写\e 而不是\033,为回车等写\r 而不是\015,所以这就是返回的内容。但大多数其他非打印字符没有短转义序列,因此它们以八进制转义返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 2022-06-13
    相关资源
    最近更新 更多