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开发文件系统实例讲解
Oct 09 PHP
桌面中心(二)数据库写入
Oct 09 PHP
wiki-shan写的php在线加密的解密程序
Sep 07 PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 PHP
php加密解密实用类分享
Jan 07 PHP
php中使用array_filter()函数过滤空数组的实现代码
Aug 19 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
php判断访问IP的方法
Jun 19 PHP
PHP编写RESTful接口的方法
Feb 21 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
May 21 PHP
laravel利用中间件做防非法登录和权限控制示例
Oct 21 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
Apache中php.ini的设置方法
2013/02/28 PHP
php笔记之:文章中图片处理的使用
2013/04/26 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
tp5.1 框架数据库-数据集操作实例分析
2020/05/26 PHP
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
jquery解析XML及获取XML节点名称的实现代码
2016/05/18 Javascript
JavaScript函数节流概念与用法实例详解
2016/06/20 Javascript
详解nodeJS中读写文件方法的区别
2017/03/06 NodeJs
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
Javascript中 toFixed四舍六入方法
2017/08/21 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
Python中偏函数用法示例
2018/06/07 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
python next()和iter()函数原理解析
2020/02/07 Python
PyQt5 如何让界面和逻辑分离的方法
2020/03/24 Python
python实现一次性封装多条sql语句(begin end)
2020/06/06 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
纯css实现照片墙3D效果的示例代码
2017/11/13 HTML / CSS
幼儿园长自我鉴定
2013/10/17 职场文书
餐饮管理自我介绍信
2014/01/15 职场文书
通信生自我鉴定
2014/01/18 职场文书
财务支持类个人的自我评价
2014/02/14 职场文书
好的旅游活动方案
2014/08/19 职场文书
工程项目合作意向书
2015/05/08 职场文书
辩论会主持词
2015/07/03 职场文书
大学生干部培训心得体会
2016/01/06 职场文书