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 相关文章推荐
ADODB结合SMARTY使用~超级强
Nov 25 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
Sep 11 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
Oct 27 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
Jul 22 PHP
Symfony页面的基本创建实例详解
Jan 26 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
laravel 5.3中自定义加密服务的方案详解
May 09 PHP
PHP实践教程之过滤、验证、转义与密码详解
Jul 24 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
PHP中“=&gt;
Mar 01 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
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使用array_fill定义多维数组的方法
2015/03/18 PHP
Centos6.5和Centos7 php环境搭建方法
2016/05/27 PHP
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
分享一个asp.net pager分页控件
2012/01/04 Javascript
js二级地域选择的实现方法
2013/06/17 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
javascript中数组array及string的方法总结
2014/11/28 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
jquery ui sortable拖拽后保存位置
2017/04/27 jQuery
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
vue element-ui实现动态面包屑导航
2019/12/23 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
如何运行Python程序的方法
2013/04/21 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
2018/03/19 Python
python调用java的jar包方法
2018/12/15 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
python3.7 使用pymssql往sqlserver插入数据的方法
2019/07/08 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
Python3通过chmod修改目录或文件权限的方法示例
2020/06/08 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
商场中秋节活动方案
2014/02/07 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
单方离婚协议书范本2014
2014/10/28 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
python执行js代码的方法
2021/05/13 Python
HTML中link标签属性的具体用法
2023/05/07 HTML / CSS