/**
* 字符串的编码与转义
*/
/*
* PHP与HTML的编码与转义
* string htmlentities ( string $string
* [, int $flags = ENT_COMPAT | ENT_HTML401
* [, string $encoding = ini_get("default_charset")
* [, bool $double_encode = true ]]] )
*
* 函数将HTML字符转换成对应的实体(除了空格符),包括小于号“<”、大于号“>”、与号“&”
* $string: 需要输入的字符串
* $flags: 控制单双引号是否转换。 ENT_COMPAT(默认值)只转换双引号,ENT_QUOTES 两种引号都转换, ENT_NOQUOTES 都不转换。
* $encoding: 字符编码格式
* $double_encode: 当此项为false时,PHP不会编码已存在的HTML实例
*
* 将字符串进行HTML编码
*/
$input = <<< std
"Stop pulling my hair" & Jane's eys flasher.< p >再动我打你
std;
echo htmlentities($input)."1\n";
echo htmlentities($input, ENT_QUOTES)."2\n";
echo htmlentities($input, ENT_NOQUOTES)."3\n";
/*
* string htmlspecialchars ( string $string
* [, int $flags = ENT_COMPAT | ENT_HTML401
* [, string $encoding = ini_get("default_charset")
* [, bool $double_encode = true ]]] )
* $string: 需要输入的字符串
* $flags: 控制单双引号是否转换。 ENT_COMPAT(默认值)只转换双引号,ENT_QUOTES 两种引号都转换, ENT_NOQUOTES 都不转换。
* $encoding: 字符编码格式
* $double_encode: 当此项为false时,PHP不会编码已存在的HTML实例
*
* 将字符串进行HTML编码
*/
echo htmlspecialchars($input)."4\n";
/*
* string htmlspecialchars_decode ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 ] )
* $string: 需要输入的字符串
* $flags: 控制单双引号是否转换。 ENT_COMPAT(默认值)只转换双引号,ENT_QUOTES 两种引号都转换, ENT_NOQUOTES 都不转换。
*
* 函数的作用和 htmlspecialchars() 刚好相反。它将特殊的HTML实体转换回普通字符。
*/
echo htmlspecialchars_decode( htmlspecialchars($input) )."5\n";
echo htmlspecialchars_decode(htmlentities($input))."6\n";
/*
* array get_html_translation_table ( [ int $table = HTML_SPECIALCHARS
* [, int $flags = ENT_COMPAT | ENT_HTML401
* [, string $encoding = 'UTF-8' ]]] )
*
* 返回 htmlspecialchars() 和 htmlentities() 处理后的转换表
*/
var_dump(get_html_translation_table( HTML_ENTITIES))."7\n";
/*
* string strip_tags ( string $str [, string $allowable_tags ] )
* 该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。
* 它使用与函数 fgetss() 一样的机制去除标记。
*
* $allowable_tags: 不需要清除的HTML标签
*/
echo strip_tags("<p><span>内容</span></p>","<span>")."\n";
/*
* PHP提供了两种方法对URL进行,编码,这两种方法的区别在于如何处空格。
* 第一种:根据RFC 3986规范 把空格当做URL中的另一个非法字符,并编码为%20.
* string rawurlencode ( string $str ) // 按照 RFC 3986 对 URL 进行编码
* string rawurldecode ( string $str ) // 对已编码的 URL 字符串进行解码
*
* 第二种:执行 application/x-www-fore-urlencoded 系统,把空格编码作为一个+号并且把它用于建立查询字符串
* string urlencode ( string $str ) // 编码 URL 字符串
* string urldecode ( string $str ) // 解码已编码的 URL 字符串
*/
$tmpURL = 'ftp://user:foo @+%/@ftp.example.com/x.txt"';
echo rawurlencode($tmpURL)."\n";
echo urlencode($tmpURL)."\n";
echo rawurldecode( rawurlencode($tmpURL) )."\n";
echo urldecode( urlencode($tmpURL) )."\n";
/*
* 绝大多数数据库都要求将SQL查询字符串进行转义
* SQL的转义方法相当简单——在单引号、双引号、空字符和反斜杠前面加一个反斜杠(\)
*
* string addslashes ( string $str ) // 使用反斜线引用字符串
* string stripslashes ( string $str ) // 反引用一个引用字符串
*
*/
// 1.利用转义字符 "\" 手动转义
echo "我只想输出字符串 \$string \n";
// 2.自动转义、还原字符串数据
$str6 = '加上斜杠变\超人\ ,"嘿嘿嘿嘿". '.NULL;
echo $str6 ."\n"; //先输出看看
$str6 = addslashes($str6); //增加斜杠变超人 (给预定义字符添加反斜杠)
echo $str6 ."\n"; //看看变超人没
$str6 = stripslashes($str6); //去掉斜杠
echo $str6 ."\n"; //看看变回去没
/*
* C语言字符串编码
* addcslashes()函数通过在字符串前加通过在字符串前加反斜杠来转义任意字符。除了以下字符:
* ASCLL值 编码
* 7 \a
* 8 \b
* 9 \t
* 10 \n
* 11 \v
* 12 \f
* 13 \r
* ASCLL值小于32或大于126的字符将使用它们的八进制值(例如"\002")进行编码
* string addcslashes ( string $str , string $charlist ) // 以 C 语言风格使用反斜线转义字符串中的字符
* string stripcslashes ( string $str ) // 反引用一个使用 addcslashes() 转义的字符串
*/
$str7 = "这次真的变身了 不骗你"; //.....
$str7 = addcslashes($str7,"这次真的变身了"); //......对“这次真的变身了”进行转义
echo $str7 ."\n";
$str7 = stripcslashes($str7); //对转义字符串进行还原
echo $str7 ."\n";
PHP字符串的编码与转义
最新推荐文章于 2022-07-23 12:10:20 发布