大麦田 发表于 2014-9-12 18:36:21

[PHP API档案] addcslashes

本帖最后由 大麦田 于 2014-9-12 18:38 编辑

以 C 语言风格使用反斜线转义字符串中的字符。
函数原型:
string addcslashes( string $str, string $charlist)
函数功能:
字符串$str中,所有属于参数 $charlist 列表中的字符,前面都加上了反斜线。
函数参数:


参数含义
$str要转义的字符
$charlist如"A..Z",将转义所有大写字母。那 "Z..A" 呢?


函数实例:

<?php

//将转义所有ASCII码在97-122之间字符 A-z
$not_escaped = "[ The quick brown fox jumps over a lazy dog. ]";

//第一种做法 A..z 相当于 A-z的意思,ascii码小的写前面,大的写后面
$escaped = addcslashes($not_escaped, 'A..z');
echo $escaped;
echo "<br />"; //html显示的换行

?>
进阶:
<?php
//上面的结果,和下面哪个的结果一致呢?
$not_escaped = "[ The quick brown fox jumps over a lazy dog. ]";
$escaped_ascii = addcslashes($not_escaped, "\65..\122");
$escaped_dec = addcslashes($not_escaped, "\101..\172");

echo $escaped_ascii;
echo "<br />";

echo $escaped_dec;
echo "<br />";

//原因是 \xxx表示8进制数字;
//而\101 和 \172 是八进制的 65|A 和 97|z
?>

<?php
//提供一个简易计算函数
function ascii_to_dec($char)
{
    $ascii = ord($char); //求得$char的ascii码
    return decoct($ascii); //将ascii码转化为八进制形式,返回
}

echo ascii_to_dec('A');
echo " ";
echo ascii_to_dec('z');
echo "<br />";

?>

注意事项:

当$charlist中   包含字符    0,a,b, f,n, r,   t和 v 转义时,
                     将被转换成 \0,\a,\b,\f,\n,\r,\t 和 \v。

在 PHP 中,只有 \0(NULL),\r(回车符),\n(换行符)和 \t(制表符)是预定义的转义序列。
在 C 语言中,上述的所有转换后的字符都是预定义的转义序列。





鱼C侦探团

网络学习 发表于 2014-10-1 01:39:34

谢谢分享资源

大麦田 发表于 2014-10-6 14:21:13

网络学习 发表于 2014-10-1 01:39
谢谢分享资源

多谢关注,如果对你学习php有帮助,我会抽空继续更新的
页: [1]
查看完整版本: [PHP API档案] addcslashes