htmlspecialchars_php 解析html标签_php 中文html转码

电脑杂谈  发布时间:2017-03-03 22:59:36  来源:网络整理

The translations performed are:

htmlspecialchars 只转化上面这几个html代码,而 htmlentities 却会转化所有的html代码,连同里面的它无法识别的中文字符也给转化了。

我们可以拿一个简单的例子来做比较:

$str='<a href="test.html">测试页面</a>';

echo htmlentities($str);

// <a href="test.html">²âÊÔÒ³Ãæ</a>

$str='<a href="test.html">测试页面</a>';

echo htmlspecialchars($str);

// <a href="test.html">测试页面</a>

结论是,有中文的时候,最好用 htmlspecialchars ,否则可能乱码

另外参考一下这个自定义函数

function my_excerpt( $html, $len ) {

// $html 应包含一个 HTML 文档。

// 本例将去掉 HTML 标记,javascript 代码

// 和空白字符。还会将一些通用的

// HTML 实体转换成相应的文本。

$search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript

"'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 标记

"'([\r\n])[\s]+'", // 去掉空白字符

"'&(quot|#34);'i", // 替换 HTML 实体

"'&(amp|#38);'i",

"'&(lt|#60);'i",

"'&(gt|#62);'i",

"'&(nbsp|#160);'i",

"'&(iexcl|#161);'i",

"'&(cent|#162);'i",

"'&(pound|#163);'i",

"'&(copy|#169);'i",

"'&#(\d+);'e"); // 作为 PHP 代码运行

$replace = array ("",

"",

"\\1",

"\"",

"&",

"<",

">",

" ",

chr(161),

chr(162),

chr(163),

chr(169),

"chr(\\1)");

$text = preg_replace ($search, $replace, $html);

$text = trim($text);

return mb_strlen($text) >= $len ? mb_substr($text, 0, $len) : '';

}

htmlspecialchar()函数和htmlentities()函数类似都是把html代码转换,htmlspecialchars_decode是把转化的html的编码转换成转换回来。

我们可以拿一个简单的例子来做比较:

运行上面的代码,就可以看出两者的差别了。

一直都知道 PHP 中的 htmlentities 和 htmlspecialchars 函数都能把 html 中的特殊字符转换成对应的 character entity (不知道怎么翻译),也一直都知道 htmlentities 和 htmlspecialchars 函数有区别,但是一直都用不到这两个函数,也就没去研究过到底有什么区别。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-35627-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 王影
      王影

      我做天猫两年亏了几十万

    • 谢小玉
      谢小玉

      美国也就是虚张声势

    热点图片
    拼命载入中...