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 相关文章推荐
层叠菜单的动态生成
Oct 09 PHP
PHP下打开URL地址的几种方法小结
May 16 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
Nov 26 PHP
浅析HTTP消息头网页缓存控制以及header常用指令介绍
Jun 28 PHP
phpmyadmin中禁止外网使用的方法
Nov 04 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
php删除文本文件中重复行的方法
Apr 28 PHP
php三元运算符知识汇总
Jul 02 PHP
PHP YII框架开发小技巧之模型(models)中rules自定义验证规则
Nov 16 PHP
php生成与读取excel文件
Oct 14 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
PHP基于openssl实现非对称加密代码实例
Jun 19 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
消息持续发送的完整例子
2006/10/09 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
jQuery AnythingSlider滑动效果插件
2010/02/07 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
我的Node.js学习之路(一)
2014/07/06 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
详解ES6中的三种异步解决方案
2018/06/28 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
[04:29]【TI9采访】OG.N0tail在胜者组决赛后接受采访
2019/08/25 DOTA
[01:11:37]完美世界DOTA2联赛PWL S2 SZ vs FTD.C 第一场 11.19
2020/11/19 DOTA
python脚本内运行linux命令的方法
2015/07/02 Python
详解Python迭代和迭代器
2016/03/28 Python
PyQt5实现下载进度条效果
2018/04/19 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
《月光启蒙》教学反思
2014/03/01 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
Golang 语言控制并发 Goroutine的方法
2021/06/30 Golang
Pygame Event事件模块的详细示例
2021/11/17 Python