PHP5.4 htmlspecialchars转义中文字符串变空
来源: 阅读:1244 次 日期:2014-09-10 09:43:23
温馨提示: 小编为您整理了“PHP5.4 htmlspecialchars转义中文字符串变空”,方便广大网友查阅!

php5.4+在htmlspecialchars转义中文的时候将中文转义为空了,做了一个项目找了一天的bug,原来是php5.4 的htmlspecialchars函数有了新特性了,下面的解决方案来源于网络

$oldword = '网站制作学习网';

$newword = htmlspecialchars($oldword);

echo $newword;

结果显示输出为空

在我本地测试的时候 php5.3.8

$oldword = 'htmlspecialchars转换字符串为空么?网站制作学习网';

$newword = htmlspecialchars($oldword);

echo $newword;

结果显示输出:htmlspecialchars转换字符串为空么?网站制作学习网

看网上的

获知 htmlspecialchars 函数原型如下:

string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )

更新日志里面又有提到:

5.4.0 The default value for the encoding parameter was changed to UTF-8.

5.4.0 The constants ENT_SUBSTITUTE, ENT_DISALLOWED, ENT_HTML401, ENT_XML1, ENT_XHTML and ENT_HTML5 were added.

PHP 从 5.4.0 版本开始第三个参数字符串编码的默认值改成了 UTF-8,而我这段代码中的中文编码正好是 GB2312 编码的,跟现在的默认参数不一致,于是更改调用, 为了与旧环境兼容,这里第二个参数没有组合使用 PHP 5.4 新加入的 ENT_HTML401 常量

$oldword= '测试新的php5.4 htmlspecialchars转换字符串为空么?网站制作学习网';

$newword = htmlspecialchars($oldword, ENT_COMPAT ,'GB2312');

echo $newword;

结果显示:测试新的php5.4 htmlspecialchars转换字符串为空么?网站制作学习网'

这样,“中文字符串”就可以正常显示了。为了使 PHP 5.4 之前环境中编写的代码能够向前兼容,建议调用 htmlspecialchars 函数的的时候都提供字符串编码参数。

更多信息请查看IT技术专栏

更多信息请查看网络编程
下一篇:thinkphp 备份类
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!

2025国考·省考课程试听报名

  • 报班类型
  • 姓名
  • 手机号
  • 验证码
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map