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 创建标签云函数代码
May 26 PHP
基于php设计模式中单例模式的应用分析
May 15 PHP
php使用ZipArchive提示Fatal error: Class ZipArchive not found in的解决方法
Nov 04 PHP
php实现将Session写入数据库
Jul 26 PHP
PHP设计模式之简单投诉页面实例
Feb 24 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
PHP之将POST数据转化为字符串的实现代码
Nov 03 PHP
ThinkPHP中create()方法自动验证表单信息
Apr 28 PHP
php微信公众号开发之翻页查询
Oct 20 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
php面向对象重点知识分享
Sep 27 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 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
解析php中call_user_func_array的作用
2013/06/07 PHP
PHP 线程安全与非线程安全版本的区别深入解析
2013/08/06 PHP
Chrome Web App开发小结
2014/09/04 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
使用jQuery内容过滤选择器选择元素实例讲解
2013/04/18 Javascript
jquery事件与函数的使用介绍
2013/09/29 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
无缝滚动的简单实现代码(推荐)
2016/06/07 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
微信小程序动态的加载数据实例代码
2017/04/14 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
python requests post多层字典的方法
2018/12/27 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
python解包概念及实例
2021/02/17 Python
电信专业应届生自荐信
2013/09/28 职场文书
大专生自荐信
2013/10/04 职场文书
写自荐信要注意什么
2013/12/26 职场文书
通信工程专业求职信
2014/06/04 职场文书
毕业生工作求职信
2014/06/30 职场文书
离婚协议书范本(通用篇)
2014/11/30 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
入党积极分子群众意见
2015/06/01 职场文书
2016公司年会主持词
2015/07/01 职场文书
零基础学java之循环语句的使用
2022/04/10 Java/Android
Vue操作Storage本地化存储
2022/04/29 Vue.js