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生成随机用户名和密码的实现代码
Feb 27 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
Jun 25 PHP
解决Codeigniter不能上传rar和zip压缩包问题
Mar 07 PHP
使用CodeIgniter的类库做图片上传
Jun 12 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
Jun 25 PHP
thinkphp文件处理类Dir.class.php的用法分析
Dec 08 PHP
php生成带logo二维码方法小结
Apr 08 PHP
ThinkPHP和UCenter接口冲突的解决方法
Jul 25 PHP
分享一个漂亮的php验证码类
Sep 29 PHP
详解php用static方法的原因
Sep 12 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
Oct 17 PHP
yii框架结合charjs实现统计30天数据的方法
Apr 04 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 MySQL与分页效率
2008/06/04 PHP
PHP XML备份Mysql数据库
2009/05/27 PHP
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
php实现简单加入购物车功能
2017/03/07 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
2020/03/30 PHP
JavaScript多线程的实现方法
2007/05/08 Javascript
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
html 锁定页面(js遮罩层弹出div效果)
2009/10/27 Javascript
jquery查找tr td 示例模拟
2014/05/08 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
微信运维交互机器人的示例代码
2018/11/12 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
numpy.linspace 生成等差数组的方法
2018/07/02 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Flask Web开发入门之文件上传(八)
2018/08/17 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
用python写PDF转换器的实现
2020/10/29 Python
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
C#如何判断当前用户是否输入某个域
2015/12/07 面试题
一道Delphi面试题
2016/10/28 面试题
毕业生造价工程师求职信
2013/10/17 职场文书
档案检查欢迎词
2014/01/13 职场文书
大学生求职自我评价
2014/01/16 职场文书
迎八一活动主题
2014/01/31 职场文书
活动策划邀请函
2014/02/06 职场文书
2015年底工作总结范文
2015/05/15 职场文书
我是特种兵观后感
2015/06/11 职场文书
校园开放日新闻稿
2015/07/17 职场文书
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python
Win11无法访问设备和打印机 如何解决页面空白
2022/04/09 数码科技