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 相关文章推荐
php 时间计算问题小结
Jan 04 PHP
php带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
生成随机字符串和验证码的类的PHP实例
Dec 24 PHP
php取得字符串首字母的方法
Mar 25 PHP
PHP数组去重比较快的实现方式
Jan 19 PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 PHP
基于php实现的验证码小程序
Dec 13 PHP
PHP获取当前执行php文件名的代码
Mar 02 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
Jun 17 PHP
PHP实现的简单sha1加密功能示例
Aug 27 PHP
laravel框架中间件 except 和 only 的用法示例
Jul 12 PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 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系统中搭建php环境
2013/08/31 PHP
php检测mysql表是否存在的方法小结
2017/07/20 PHP
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
jquery编写日期选择器
2017/03/16 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
node实现的爬虫功能示例
2018/05/04 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
jQuery 选择器用法基础入门示例
2020/01/04 jQuery
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
[04:45]DOTA2-DPC中国联赛正赛 iG vs LBZS 赛后选手采访
2021/03/11 DOTA
python控制台显示时钟的示例
2014/02/24 Python
python登录豆瓣并发帖的方法
2015/07/08 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
Python面向对象思想与应用入门教程【类与对象】
2019/04/12 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
python实现从ftp服务器下载文件
2020/03/03 Python
Python中有几个关键字
2020/06/04 Python
keras的ImageDataGenerator和flow()的用法说明
2020/07/03 Python
全球速卖通:AliExpress(国际版淘宝)
2017/09/20 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
车间安全生产标语
2014/06/06 职场文书
法学自荐信
2014/06/20 职场文书
公司应聘求职信
2014/06/21 职场文书
主题党日活动总结
2014/07/08 职场文书
做人民满意的公务员活动方案
2014/08/25 职场文书
卖房协议书样本
2014/10/30 职场文书
郭明义观后感
2015/06/08 职场文书
欠条范文
2015/07/03 职场文书
2016年校园社会综合治理宣传月活动总结
2016/03/16 职场文书
基于Python实现股票收益率分析
2022/04/02 Python
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python