昨天在写 PDO数据库封装类的 测试代码时遇到这个问题,取出的数组 使用 count 返回5,使用 array_keys 返回数组,但是在 dump 的时候却返回 null,纠结了好长时间,诸如下图:
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 日语
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 日语
相关推荐
PHP中的htmlspecialchars()函数是一个非常实用的函数,主要用于将特殊字符转换成HTML实体。这在Web开发中非常重要,因为它可以帮助防止跨站脚本攻击(XSS),同时确保数据在浏览器中正确显示。 htmlspecialchars()...
PHP的htmlspecialchars、strip_tags、addslashes是网页程序开发中常见的函数,今天就来详细讲述这些函数的用法: 1.函数strip_tags:去掉 HTML 及 PHP 的标记 注意:本函数可去掉字串中包含的任何 HTML 及 PHP 的...
PHP5.4-htmlspecialchars转义中文字符串变空.doc
在PHP编程中,`htmlspecialchars()` 是一个非常关键的函数,用于将预定义的字符转换为HTML实体,以防止数据在HTML环境下产生意外的解析效果。这个函数的主要作用是确保输入到网页的内容不会被浏览器错误地解释为HTML...
htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " 已成功上传."; } else { echo "文件上传失败."; } } } ?> ``` 在这个脚本中,我们首先定义了目标文件夹`$target_dir`和目标文件路径`$...
从旧版升级到php5.4,恐怕最麻烦的就是htmlspecialchars这个问题了!当然,htmlentities也会受影响,不过,对于中文站来说一般用htmlspecialchars比较常见,htmlentities非常少用到。 可能老外认为网页普遍应该是utf...
此外,PHP的版本更新和新特性也是考察点,例如PHP 7引入的返回类型声明、null合并运算符、空值判断等。面试者需要关注最新版本的改进,以显示自己的学习能力和适应性。 安全性是任何Web应用的重要考量。了解如何...
其基本语法为`string strip_tags(string str)`,它接收一个字符串参数`str`,返回一个去除了HTML和PHP标签的新字符串。如果原始字符串中的标签有误(比如缺少大于号>),`strip_tags`也会返回错误的结果。这个函数常...
### PHP htmlspecialchars 加强版 #### 知识点概述 在 Web 开发中,为了防止 XSS (Cross Site Scripting) 攻击,开发人员经常需要对用户提交的数据进行转义处理,确保这些数据作为 HTML 输出时不会被浏览器错误...
PHP htmlspecialchars_decode() 函数 实例 把预定义的 HTML 实体 “<“(小于)和 “>”(大于)转换为字符: <?php $str = This is some <b>bold</b> text.; echo htmlspecialchars_decode($str); ?> ...
12. **PHP的最新特性**:随着版本更新,PHP不断引入新特性,如PHP7中的类型声明、返回类型提示、null合并运算符等,及时了解并应用这些新特性,可以使代码更加现代和高效。 通过阅读《PHP精粹 编写高效PHP代码》这...
PHP的filter_var函数和htmlspecialchars函数可以有效过滤非法字符。 6. **会话管理**:为了跟踪用户的查询状态,可能需要使用PHP的session功能,确保数据的安全传输。 7. **错误处理与日志**:良好的错误处理机制...
6. **数组操作**:PHP支持一维、多维数组,可以使用`count`计算元素个数,`array_push`向数组末尾添加元素,`array_pop`删除并返回数组最后一个元素,`foreach`循环遍历数组。 7. **字符串处理**:`strlen`计算字符...
PHP提供了一些内置函数,如`htmlspecialchars()`用于转义特殊字符,防止XSS攻击。 ### 5. 文件`guestbook` 这个文件可能是整个项目的入口点,包含处理用户请求的主要逻辑。根据项目结构,它可能包含以下部分: - ...
在PHP中,我们有多种方式来进行数据过滤,其中htmlentities和htmlspecialchars函数是我们常用的工具。 htmlentities函数的功能是将字符串中所有可能的字符转换为HTML实体。这意味着它会将字符串中的特殊字符转换成...