您现在的位置: 365建站网 > 365学习 > php5.4以上版本GBK编码下htmlspecialchars输出为空的兼容性处理方法

php5.4以上版本GBK编码下htmlspecialchars输出为空的兼容性处理方法

文章来源:365jz.com     点击数:251    更新时间:2019-05-18 17:26   参与评论

从旧版升级到PHP5.4,恐怕最麻烦的就是HTMLspecialchars这个问题了!当然,htmlentities也会受影响,不过,对于中文站来说一般用htmlspecialchars比较常见,htmlentities非常少用到。

可能老外认为网页普遍应该是utf-8编码的,于是苦了那些用GB2312,GBK编码的中文站......!

PHP htmlspecialchars() 函数

PHP String 函数


实例

把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体:


<?php
$str = "This is some <b>bold</b> text.";
echo htmlspecialchars($str);
?>

以上代码的 HTML 输出如下(查看源代码):


<!DOCTYPE html>
<html>
<body>
This is some <b>bold</b> text.
</body>
</html>

以上代码的浏览器输出:


This is some <b>bold</b> text.


htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。


预定义的字符是:


& (和号)成为 &

" (双引号)成为 "

' (单引号)成为 '

< (小于)成为 <

> (大于)成为 >

提示:如需把特殊的 HTML 实体转换回字符,请使用 htmlspecialchars_decode() 函数。



在使用php5.4以上版本以上时会有一个函数可能会报错

如下

QQ截图20160731183931.png

Warning: htmlspecialchars(): charset `gbk' not supported, assuming utf-8

原因是因为5.4以上这个函数默认为utf8编码没有gbk所有传进去的参数如果有中文就会报上面这个错误

如果你的程序用的是gbk的话就可以使用下面这个方法

给htmlspecialchars()传后两个参数

如下:


htmlspecialchars($str,ENT_COMPAT,'GB2312');//这样就不会报错啦

如果你的程序里用啦好多这个函数,那就要你一个一个替换喽

还有一种情况,如果你的程序是utf8的那么检查下你的php.ini中的字符集配置是不是下面gbk的如果是就改成utf-8同样的就不会报错啦


default_charset = "UTF-8"
;default_charset = "GBK"

按上面的把gbk这行注释掉,使用默认utf-8的编码就可以啦


函数写法:

function JZ_htmlspecialchars($str) {
    global $cfg_soft_lang;
    if (version_compare(PHP_VERSION, '5.4.0', '<')) return htmlspecialchars($str);
    if ($cfg_soft_lang=='gb2312') return htmlspecialchars($str,ENT_COMPAT,'ISO-8859-1');
    else return htmlspecialchars($str);
}

调用:dede_htmlspecialchars('你的代码');


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (251人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------