[置顶] PHP5.5 htmlspecialchars 返回null的坑
2016-08-25 17:21
447 查看
昨天在写 PDO数据库封装类的 测试代码时遇到这个问题,取出的数组 使用 count 返回5,使用 array_keys 返回数组,但是在 dump 的时候却返回 null,纠结了好长时间,诸如下图:
dump 函数用了好多年了,一直没有出现这个问题,我还以为是 $rowset 返回的是引用,所以还重新赋值了下,
我的dump函数如下:
话说这个函数从php4.3时代就跟着我打拼,一直没出现过啥问题,....
最后 查了N多地方才把注意力移到这个上面,我机器上装的是 PHP5.5,我没有测试过到底是哪个版本就会出现这个问题,此处标记下,这个是坑...
那行代码 改成:
这个,增加第二个参数 ,并追加
写道
string htmlentities ( string $string [, int $flags = ENT_COMPAT [, string $charset [, bool $double_encode = true ]]] )
ENT_COMPAT 将双引号换成单引号
ENT_QUOTES 将转换和单引号都翻倍。
ENT_NOQUOTES 将离开两双,单引号得救。
ENT_IGNORE
静静地丢弃无效代码单元序列代替返回一个空字符串。在PHP 5.3.0补充说。这是供向后兼容性,避免使用它,因为它可能的安全隐患。
支持的字符集列表 字符集 别名 描述
ISO-8859-1 ISO8859-1 西欧,Latin-1
ISO-8859-15 ISO8859-15 西欧,Latin-9。增加欧元符号,法语和芬兰语字母在 Latin-1(ISO-8859-1) 中缺失。
UTF-8 ASCII 兼容的多字节 8 位 Unicode。
cp866 ibm866, 866 DOS 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1251 Windows-1251, win-1251, 1251 Windows 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1252 Windows-1252, 1252 Windows 特有的西欧编码。
KOI8-R koi8-ru, koi8r 俄语。本字符集在 4.3.2 版本中得到支持。
BIG5 950 繁体中文,主要用于中国台湾省。
GB2312 936 简体中文,中国国家标准字符集。
BIG5-HKSCS 繁体中文,附带香港扩展的 Big5 字符集。
Shift_JIS SJIS, 932 日语
EUC-JP EUCJP 日语
大小: 54.3 KB
查看图片附件
dump 函数用了好多年了,一直没有出现这个问题,我还以为是 $rowset 返回的是引用,所以还重新赋值了下,
我的dump函数如下:
function dump($vars, $label = '', $return = false) { $content = "<pre>\n"; if ($label != '') { $content .= "<strong>{$label} :</strong>\n"; } $content .= htmlspecialchars(print_r($vars, true)); $content .= "\n</pre>\n"; if ($return) { return $content; } echo $content; }
话说这个函数从php4.3时代就跟着我打拼,一直没出现过啥问题,....
最后 查了N多地方才把注意力移到这个上面,我机器上装的是 PHP5.5,我没有测试过到底是哪个版本就会出现这个问题,此处标记下,这个是坑...
那行代码 改成:
$content .= htmlspecialchars(print_r($vars, true),ENT_COMPAT | ENT_IGNORE);
这个,增加第二个参数 ,并追加
| ENT_IGNORE
写道
string htmlentities ( string $string [, int $flags = ENT_COMPAT [, string $charset [, bool $double_encode = true ]]] )
ENT_COMPAT 将双引号换成单引号
ENT_QUOTES 将转换和单引号都翻倍。
ENT_NOQUOTES 将离开两双,单引号得救。
ENT_IGNORE
静静地丢弃无效代码单元序列代替返回一个空字符串。在PHP 5.3.0补充说。这是供向后兼容性,避免使用它,因为它可能的安全隐患。
支持的字符集列表 字符集 别名 描述
ISO-8859-1 ISO8859-1 西欧,Latin-1
ISO-8859-15 ISO8859-15 西欧,Latin-9。增加欧元符号,法语和芬兰语字母在 Latin-1(ISO-8859-1) 中缺失。
UTF-8 ASCII 兼容的多字节 8 位 Unicode。
cp866 ibm866, 866 DOS 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1251 Windows-1251, win-1251, 1251 Windows 特有的西里尔编码。本字符集在 4.3.2 版本中得到支持。
cp1252 Windows-1252, 1252 Windows 特有的西欧编码。
KOI8-R koi8-ru, koi8r 俄语。本字符集在 4.3.2 版本中得到支持。
BIG5 950 繁体中文,主要用于中国台湾省。
GB2312 936 简体中文,中国国家标准字符集。
BIG5-HKSCS 繁体中文,附带香港扩展的 Big5 字符集。
Shift_JIS SJIS, 932 日语
EUC-JP EUCJP 日语
大小: 54.3 KB
查看图片附件
相关文章推荐
- [置顶] PHP 5.5 empty + 魔术变量 的坑
- [置顶] Debugging and Profiling PHP with Xdebug
- Php处理大文件-分割和合并
- [置顶] PHP插件 vld 学习
- [置顶] 将StartOS5.1打造成PHP开发者环境 LAMP
- [置顶] 简易PHP路由,支持正反向url解析支持
- [置顶] PHP 数组元素值为NULL 与isset的坑
- [置顶] PHP 内存管理与释放 释疑
- [置顶] 自己动手搭建 XP上的 apahce + php 5.3 + xdebug + webgrind
- [置顶] 推荐PHP框架 YAF
- laravel图片上传
- [置顶] 我终于实现了 把 firephp 集成进 magento了 终于能监测 sql了
- PHP-随机产生密码(验证码)函数
- [置顶] PHP反射小试: 提取控制器的action方法
- [置顶] 发布修改之后的qeeplay框架 , 支持php5.2
- [置顶] 自己动手写 PHP acts_as_taggable_on 实现
- [置顶] 解决PHP生成UTF-8编码的CSV文件用Excel打开乱码的问题
- [置顶] PHP解决浏览器 下载文件 中文名称乱码问题--兼容大多浏览器
- [置顶] PHP中的“syntax error, unexpected T_PAAMAYIM_NEKUDOTAYI
- [置顶] ThinkPHP 集成FIREPHP 呵呵