addcslashes

(PHP 4, PHP 5)

addcslashes -- 像 C 那样使用反斜线转义字符串中的字符

描述

string addcslashes ( string str, string charlist )

返回字符串,该字符串在属于参数 charlist 列表中的字符前都加上了反斜线。此函数对 \n\r 等进行转义。像 C 那样,ASCII 码低于 32 以及高于 126 的字符均转换成使用八进制表示。

当你选择对字符 0、a、b、f、n、r、t 和 v 进行转义时需要小心,它们将被转换成 \0、\a、\b、\f、\n、\r、\t 和 \v。在 PHP 中,只有 \0(NULL)、\r(回车符)、\n(换行符)和 \t(分隔符)是预定义的转义序列, 而在 C 中,上述的所有转换后的字符都是预定义的转义序列。

charlist 参数,如“\0..\37”,将转义所有 ASCII 码介于 0 和 37 之间的字符。

例子 1. addcslashes() 示例

<?php
$escaped
= addcslashes($not_escaped, "\0..\37!@\177..\377");
?>

当定义 charlist 参数中的字符序列时,你需要确实知道介于你自己设置的开始及结束范围之内的都是些什么字符。

<?php
echo addcslashes('foo[ ]', 'A..z');
// 输出:\f\o\o\[ \]
// 所有大小写字母均被转义
// ... 但 [\]^_` 以及分隔符、换行符、回车符等也一并被转义了。
?>

另外,如果设置范围中的结束字符 ASCII 码高于开始字符,则不会创建范围,只是将开始字符、结束字符以及其间的字符逐个转义。可使用 ord() 函数获取字符的 ASCII 码值。

<?php
echo addcslashes("zoo['.']", 'z..A');
// 输出:\zoo['\.']
?>

参见 stripcslashes()stripslashes()htmlspecialchars()quotemeta()