thinkphp的dump函数无输出实例代码

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);

测试结果

发现仅仅var_dump有输出,而dump没有输出。

错误分析,定位htmlspecialchars

追踪调试函数,可以检测出问题出在htmlspecialchars这个函数上。

官网描述:5.4版本之前此函数的默认编码为ISO-8859-1,5.4和5.5版本默认编码为UTF-8,5.6之后则使用配置编码作为默认编码。 p>

这里PHP Version 5.6.21,那么htmlspecialchars使用的编码即为配置项的编码,如下:

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函数无输出实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

时间: 2024-09-29 03:26:19

thinkphp的dump函数无输出实例代码的相关文章

thinkphp的dump函数无输出实例代码_php实例

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 = nul

php 字符串函数教程与实例代码

在php中字符串函数有很多哦,在说了php本来就是由函数组成了,这让开发人员可以加快网站的开发速度哦,好了费话不说多了我们来看看我为各位朋友免费提供的php 字符串函数教程与实例代码吧. AddSlashes: 字符串加入斜线. bin2hex: 二进位转成十六进位. Chop: 去除连续空白. Chr: 返回序数值的字符. chunk_split: 将字符串分成小段. convert_cyr_string: 转换古斯拉夫字符串成其它字符串. crypt: 将字符串用 DES 编码加密. ech

php七种缓存控制输出实例代码

php教程七种缓存控制输出实例代码 可以根据缓存开启与否,有如下几种不同的写法: 注:以下代码都未考虑ie缓存必须大于256字节才输出的问题,如在ie下测试,请在代码开始加一句:"echo str_repeat(' ',256)" 写法1: output_buffering = off implicit_flush=off for($i=0;$i<10;$i++) {    echo $i.'<br />';    flush();    sleep(1); } 写法

php reset() 函数指针指向数组中的第一个元素并输出实例代码_php实例

reset函数将数组的内部指针指向第一个单元,并输出该数组. 基本语法 reset(array) reset() 将 array 的内部指针倒回到第一个单元并返回第一个数组单元的值. 参数介绍: 参数 描述 array 必需.规定要使用的数组. 返回值 返回数组第一个单元的值,如果数组为空则返回 FALSE. 实例 <?php $array = array('step one', 'step two', 'step three', 'step four'); // 数组默认指针指向第一个元素 e

thinkphp模板用法和内容输出实例_php实例

本文实例讲述了thinkphp模板用法和内容输出.分享给大家供大家参考.具体分析如下: 一.模板的用法 a.规则 模板文件夹下[TPL]    /与模块名同名的文件夹[Index]/ 与方法名同名的文件[index].html(.tpl) 模板文件夹下[TPL]/[分组文件夹/]    /与模块名同名的文件夹[Index]/与方法名同名的文件[index].html(.tpl) 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]   /与模块名同名的文件夹[Index]/与方法名同名的

php ereg_replace函数基础与实例代码

//string ereg_replace ( string $pattern , string $replacement , string $string ) /* 修改后的字符串返回.如果没有找到匹配的字符串,那么将返回不变 */ //实例  代码如下 复制代码 $string = "this 111cn.net a test"; echo str_replace(" 111cn.net", " was", $string); echo er

php odbc_connect()函数说明与实例代码

. odbc_exec() 函数用于执行 sql 语句 $db_user="dbuser";         //定义连接用户名 $db_pass="dbpass";         //连接用户对应的密码 $dsn="dsn";          //定义dsn资料来源 if(odbc_connect($dsn,$db_user,$db_pass))    //对odbc数据源进行连接 {   echo "成功连接到odbc数据源&q

php字符串分割函数explode的实例代码_php技巧

array explode (string $separator, string $string [, int $limit]) 该函数有3个参数,第一个参数$separator设置一个分割字符(串).第二个参数$string指定所要操作的字符串.$limit参数是可选的,指定最多将字符串分割为多少个子串.该函数返回一个由被分割的子串组成的数组. 来看下面的例子,对一个由逗号分隔的多行文本数据进行分析.例1,分割字符串. 复制代码 代码如下: <?php$this_year = 2013;$te

php preg_replace函数基础与实例代码

//preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) 主题为匹配搜索模式,替换替换 /* 要搜索的模式.它可以是一个字符串或一个字符串数组. 电子修饰符使preg_replace函数()替代治疗后,适当引用作为参数是php教程代码进行替换.提示:请确保置换构成一个有效的php代码字符串,否则php将抱怨在包含preg_replace函