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 字符串操作入门教程
Dec 06 PHP
php中用文本文件做数据库的实现方法
Mar 27 PHP
Windows下利用Gvim写PHP产生中文乱码问题解决方法
Apr 20 PHP
Thinkphp模板中使用自定义函数的方法
Sep 23 PHP
php使HTML标签自动补全闭合函数代码
Oct 04 PHP
PHP页面实现定时跳转的方法
Oct 31 PHP
php截取中文字符串函数实例
Feb 23 PHP
深入理解PHP中的Streams工具
Jul 03 PHP
phpinfo() 中 Local Value(局部变量)Master Value(主变量) 的区别
Feb 03 PHP
php实现的SSO单点登录系统接入功能示例分析
Oct 12 PHP
PHP实现微信对账单处理
Oct 01 PHP
php利用array_search与array_column实现二维数组查找
Jul 08 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压缩html网页代码(清除空格,换行符,制表符,注释标记)
2012/04/02 PHP
php实现批量删除挂马文件及批量替换页面内容完整实例
2016/07/08 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
javascript五图轮播切换实用版
2012/08/17 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
2013/02/06 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
AngularJS入门教程之数据绑定用法示例
2016/11/01 Javascript
D3.js中强制异步文件读取同步的几种方法
2017/02/06 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
[02:17]TI4西雅图DOTA2前线报道 啸天mik夫妻档解说
2014/07/08 DOTA
Python编程中字符串和列表的基本知识讲解
2015/10/14 Python
TensorFlow实现Softmax回归模型
2018/03/09 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
Python3 全自动更新已安装的模块实现
2020/01/06 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
python实现发送邮件
2021/03/02 Python
Pytorch 中的optimizer使用说明
2021/03/03 Python
浅析与CSS3的loading动画加载相关的transition优化
2015/05/18 HTML / CSS
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
英国最大的海报商店:GB Posters
2018/03/20 全球购物
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
《维生素c的故事》教学反思
2014/02/18 职场文书
股东协议书范本
2014/04/14 职场文书
企业员工薪酬方案
2014/06/04 职场文书
拉歌口号大全
2014/06/13 职场文书
学校党员对照检查材料
2014/08/28 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
幼儿园安全工作总结2015
2015/04/20 职场文书
Nginx 502 Bad Gateway错误原因及解决方案
2021/03/31 Servers
Python matplotlib绘制雷达图
2022/04/13 Python