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 cache类代码(php数据缓存类)
Apr 15 PHP
PHP 自定义错误处理函数的使用详解
May 10 PHP
深入PHP curl参数的详解
Jun 17 PHP
jQuery+php实现ajax文件即时上传的详解
Jun 17 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
Nov 13 PHP
Zend Framework教程之动作的基类Zend_Controller_Action详解
Mar 07 PHP
简单概括PHP的字符串中单引号与双引号的区别
May 07 PHP
PHP yii实现model添加默认值的方法(两种方法)
Nov 10 PHP
PHP基于IMAP收取邮件的方法示例
Aug 07 PHP
PHP xpath()函数讲解
Feb 11 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 PHP
PHP7 其他修改
Mar 09 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 screw加密php源代码
2013/06/20 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
CentOS安装php v8js教程
2015/02/26 PHP
php实现多城市切换特效
2015/08/09 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
jQuery获取字符串中出现最多的数
2016/02/22 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
vue input标签通用指令校验的实现
2019/11/05 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
Python多线程编程(五):死锁的形成
2015/04/05 Python
Python批量按比例缩小图片脚本分享
2015/05/21 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
Python使用Matplotlib实现Logos设计代码
2017/12/25 Python
Python-OpenCV基本操作方法详解
2018/04/02 Python
Python实现迭代时使用索引的方法示例
2018/06/05 Python
浅谈flask源码之请求过程
2018/07/26 Python
用Python实现数据的透视表的方法
2018/11/16 Python
python安装本地whl的实例步骤
2019/10/12 Python
PyCharm使用之配置SSH Interpreter的方法步骤
2019/12/26 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
html5使用canvas画一条线
2014/12/15 HTML / CSS
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
企划经理的岗位职责
2013/11/17 职场文书
寒假实习自荐信
2014/01/26 职场文书
出生证明公证书
2014/04/09 职场文书
工会工作个人总结
2015/03/03 职场文书
解约证明模板
2015/06/19 职场文书
2016庆祝教师节新闻稿
2015/11/25 职场文书