PHP字符串的编码与转义

/**
 * 字符串的编码与转义
 */

/*
 * 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";

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值