手机版

thinkphp的转储函数没有输出示例代码

时间:2021-09-12 来源:互联网 编辑:宝哥软件园 浏览:

Thinkphp转储函数

/* * *浏览器友好的变量输出* @param混合$var变量* @param boolean $echo输出默认为True,如果为false,则输出字符串返回* @param string $label标签默认为空*是否为True * @ return void | string */function dump($ var,$ echo=true,$ label=null,$ strict=True){ $ label=(null==$ label)严格默认为?' : rtrim($标签)。' ';if(!$ strict){ if(ini _ get(' html _ errors '){ $ output=print _ r($ var,true);$output='pre '。$标签。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 '。$标签。htmlspecialchars($output,ENT_QUOTES)。/pre ';} } if($ echo){ echo($ output);返回null} else { return $ output}}测试代码

$a='中文';$a=iconv('UTF-8 ',' GB2312 ',$ a);垃圾场(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版本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函数没有输出的示例代码,就是边肖分享给大家的全部内容,希望能给大家一个参考,多支持我们。

版权声明:thinkphp的转储函数没有输出示例代码是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。