thinkphp的dump函数无输出实例代码


Posted in PHP onNovember 15, 2016

Thinkphp的dump函数

/**
 * 浏览器友好的变量输出
 * @param mixed $var 变量
 * @param boolean $echo 是否输出 默认为True 如果为false 则返回输出字符串
 * @param string $label 标签 默认为空
 * @param boolean $strict 是否严谨 默认为true
 * @return void|string
 */
function dump($var, $echo = true, $label = null, $strict = true)
{
  $label = (null === $label) ? '' : rtrim($label) . ' ';
  if (!$strict) {
    if (ini_get('html_errors')) {
      $output = print_r($var, true);
      $output = '<pre>' . $label . htmlspecialchars($output, ENT_QUOTES) . '</pre>';
    } else {
      $output = $label . print_r($var, true);
    }
  } else {
    ob_start();
    var_dump($var);
    $output = ob_get_clean();
    if (!extension_loaded('xdebug')) {
      $output = preg_replace('/\]\=\>\n(\s+)/m', '] => ', $output);
      $output = '<pre>' . $label . htmlspecialchars($output, ENT_QUOTES) . '</pre>';
    }
  }
  if ($echo) {
    echo ($output);
    return null;
  } else {
    return $output;
  }
}

测试代码

$a = '中文';
$a = iconv("UTF-8", "GB2312", $a);
dump($a);
echo "<hr />";
var_dump($a);

测试结果

thinkphp的dump函数无输出实例代码

发现仅仅var_dump有输出,而dump没有输出。

错误分析,定位htmlspecialchars

追踪调试函数,可以检测出问题出在htmlspecialchars这个函数上。

thinkphp的dump函数无输出实例代码

官网描述:5.4版本之前此函数的默认编码为ISO-8859-1,5.4和5.5版本默认编码为UTF-8,5.6之后则使用配置编码作为默认编码。 p>

这里PHP Version 5.6.21,那么htmlspecialchars使用的编码即为配置项的编码,如下:

thinkphp的dump函数无输出实例代码

htmlspecialchars使用UTF-8编码,对于gbk,gb2312等中文编码的字符串,则无输出。只要htmlspecialchars函数参数的字符串中包含一个gbk或者gb2312编码的字符,则无输出。测试如下:

$b = '中文abc';
$a = iconv("UTF-8", "GB2312", $b);
$c = $b.$a;
var_dump(htmlspecialchars($a, ENT_QUOTES)); // 无输出
var_dump(htmlspecialchars($b, ENT_QUOTES)); // 输出正常
var_dump(htmlspecialchars($c, ENT_QUOTES)); // 无输出

解决方案

$b = '中文abc';
$a = iconv("UTF-8", "GB2312", $b);
$c = $b.$a;
var_dump(htmlspecialchars($a, ENT_QUOTES, 'ISO-8859-1')); // 有输出,gb2312编码中文乱码
var_dump(htmlspecialchars($b, ENT_QUOTES, 'ISO-8859-1')); // 输出正常
var_dump(htmlspecialchars($c, ENT_QUOTES, 'ISO-8859-1')); // 有输出,gb2312编码中文乱码

所以将Thinkphp的dump函数中htmlspecialchars函数加上默认编码ISO-8859-1即可。

以上这篇thinkphp的dump函数无输出实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
Mar 19 PHP
PHP版 汉字转码的实现详解
Jun 09 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
php中url传递中文字符,特殊危险字符的解决方法
Aug 17 PHP
ThinkPHP中的关联模型注意点
Jun 16 PHP
php+ajax实现的点击浏览量加1
Apr 16 PHP
PHP中iconv函数知识汇总
Jul 02 PHP
PHP实现的限制IP投票程序IP来源分析
May 04 PHP
php四种定界符详解
Feb 16 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP实现微信申请退款功能
Oct 01 PHP
Laravel如何实现适合Api的异常处理响应格式
Jun 14 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
Nov 15 #PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 #PHP
php 判断过去离现在几年的函数(实例代码)
Nov 15 #PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
Nov 15 #PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 #PHP
thinkPHP内置字符串截取函数用法详解
Nov 15 #PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 #PHP
You might like
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
php 应用程序安全防范技术研究
2009/09/25 PHP
php 删除目录下N分钟前创建的所有文件的实现代码
2013/08/10 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
javascript 树控件 比较好用
2009/06/11 Javascript
jQuery中读取json文件示例代码
2013/05/10 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
js中生成map对象的方法
2014/01/09 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
Seajs的学习笔记
2014/03/04 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
探讨JavaScript语句的执行过程
2016/01/28 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
详解angular中的作用域及继承
2017/05/31 Javascript
Vue中inheritAttrs的使用实例详解
2020/12/31 Vue.js
Python中的并发编程实例
2014/07/07 Python
Centos5.x下升级python到python2.7版本教程
2015/02/14 Python
python检测远程端口是否打开的方法
2015/03/14 Python
python编程实现归并排序
2017/04/14 Python
python如何读写csv数据
2018/03/21 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
Python3内置模块pprint让打印比print更美观详解
2019/06/02 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
优秀员工表扬信
2014/01/17 职场文书
物资采购方案
2014/06/12 职场文书
大学生英文求职信范文
2015/03/19 职场文书
审查起诉阶段律师意见书
2015/05/19 职场文书
电力安全学习心得体会
2016/01/18 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS