如何使用PHP中的var_dump()查看长字符串的完整内容

65

我有一个包含一些字符串的数组,例如:

$array = array("string1","string2","string3");

但是那些字符串非常长,有时长度超过 2000。因此当我执行

时,
echo "<pre>";
var_dump($array);
echo "</pre>";

它向我展示了类似于以下内容:

string 'zzzzzzzzzzzzzzzzz '... (length = 994)
string 'yyyyyyyyyyyyyyyyy '... (length = 1287)
string 'xxxxxxxxxxxxxxxxx '... (length = 1718)

我该如何查看整个数组内容,而不仅是其中的字符串?顺便提一下,这个数组里面包含HTML标签,所以我不能用echo $array[string];来输出。


在脚本中添加 phpinfo(); 并搜索结果中的 "xdebug"。 - elixenide
是的,它有xdebug 2.2.5。 - Carlos2W
@AbraCadaver 在wamp本地主机上它做了我说的事情,但我不明白为什么。 - Carlos2W
2
echo var_export($array, true) 是什么意思?(然后查看源代码,因为有 HTML 标签)? - Mat
@Mat var_export() 渲染的是 HTML,这不是我想要的。 - Carlos2W
显示剩余3条评论
4个回答

115

您正在使用xdebug,它会改写默认的var_dump()函数,以便呈现更美观和可配置的输出结果。默认情况下,它也限制了一次显示多少信息。要获取更多输出,请更改一些设置。

将以下内容添加到脚本顶部:

ini_set("xdebug.var_display_max_children", '-1');
ini_set("xdebug.var_display_max_data", '-1');
ini_set("xdebug.var_display_max_depth", '-1');

来自文档:

xdebug.var_display_max_children

类型:整数,默认值:128

控制使用xdebug_var_dump()、xdebug.show_local_vars或Function Traces显示变量时显示的数组子元素和对象属性的数量。

要禁用任何限制,请使用-1作为值。

此设置不会影响通过远程调试功能发送到客户端的子级数量。

xdebug.var_display_max_data

类型:整数,默认值:512

控制使用xdebug_var_dump()、xdebug.show_local_vars或Function Traces显示变量时显示的最大字符串长度。

要禁用任何限制,请使用-1作为值。

此设置不会影响通过远程调试功能发送到客户端的子级数量。

xdebug.var_display_max_depth

类型:整数,默认值:3

控制使用xdebug_var_dump()、xdebug.show_local_vars或Function Traces显示变量时显示的嵌套数组元素和对象属性的层数。

您可以选择的最大值为1023。您也可以使用-1作为值来选择此最大值。

此设置不会影响通过远程调试功能发送到客户端的子级数量。


3
可以使用相同的配置设置名称将其放置在php.ini文件中,例如xdebug.var_display_max_depth=-1有效,但建议仅适用于本地开发站点。 - treyBake
1
@ThisGuyHasTwoThumbs 很好的观点。话虽如此,在生产中根本不应该使用xdebug;它会极大地降低性能。 - elixenide
1
@EdCottrell 确实如此^^ 应该只在本地和开发环境中使用 :) - treyBake
1
请注意,在PHP 7.1中,第二个参数应该是字符串,而不是整数。 - Valentin Knyazev

2
有时,当处理长字符串时,使用var_dump可能会非常繁琐。 可以使用终端输出结果,而不是在浏览器上输出结果。 另一种解决方法是使用file_put_contents或类似的方法将结果输出到文本文件中。然后打开文件并检查结果。

2
使用print_r()而不是var_dump()来打印长字符串。

-4

类似这样的代码也会显示值中的任何HTML标签:

foreach($array as $key=>$value) {
    echo($key.':<br /><pre>'.htmlspecialchars($value).'<pre><hr>');
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接