【问题标题】:String is not empty but not appearing when using var_dump使用 var_dump 时字符串不为空但不出现
【发布时间】:2011-11-26 19:02:28
【问题描述】:

目前我正在尝试返回一个公开可用的 XML 资源,但当我使用 var_dump($resource) 时,它会返回 string(4390) " "

我正在使用 CURL 来检索资源,并且它成功返回了其他资源。那里显然有一些东西(你可以看到有 4390 个字符!)但它没有成功返回。

我尝试将其包装在 utf8_encode 中,但这并没有什么不同。

我也尝试使用 print_r<pre> 标记返回它,尽管这也没有返回任何内容。

这里的任何帮助都会很棒!

【问题讨论】:

  • 仅仅因为你看不到字符,并不意味着它们不存在。例如,如果您在浏览器中查看此内容并且有 4390 个空格,那么您只会看到一个。
  • 如果你直接去它不是空白的,它里面存储了相当多的XML数据。我刚刚将 XML 复制到一个字符计数器中,它返回 4384 个字符。

标签: php xml curl


【解决方案1】:

或者您可以使用Kint 代替 var_dump 来显示调试输出。它将以最易读的方式显示有关转储变量的最多信息。不用说它也可以毫不费力地显示 html。

截图:


(来源:github.io

【讨论】:

    【解决方案2】:

    要显示字符串中不可显示的字符,不要使用var_dump,而是打印出hex-dump of the string,例如

    echo bin2hex($resource);
    

    使用bin2hexDocs,但上面的链接提供了更多选择。选择最适合您的调试需求的。

    编辑:如果您实际输出的是 HTML 或 XML 元素,请使用htmlspecialcharsDocs

    echo htmlspecialchars($result);
    

    【讨论】:

    • 这会返回随机加载的字符,即 3c3f786d6c2076657273696f6e3d22312e30223f3e0d0a0d0a0d....
    • 这是每个字符的一个hexadecimal value00FF)。如果您难以阅读,您可以使用更好的十六进制转储功能,该功能将同时显示:十六进制和可打印字符。查看链接的问题,它有多个答案和更多选择。
    • 谢谢,虽然我们真正需要做的只是在脚本中使用这个 XML 数据。它显然存在并且正在被退回,但我无法使用它。
    • XML 有什么问题?
    • @Ollie 我和你有同样的问题。我想使用从服务器获得的 XML 字符串。当我尝试创建 SimpleXMLElement 对象时,我得到一个空对象。我该如何解决?
    【解决方案3】:

    xml 中的文本是什么类型的?如果只有 html 标签,请尝试查看网页的源代码。也许它们不会显示,因为您的浏览器会解释 html 并且不显示标签

    【讨论】:

    • 看起来像这样:<?xml version="1.0"?> <users> <user userId="aaaaa"/><user userId="bbbbb"/>...
    • 你在找htmlspecialchars,看我的updated answer
    猜你喜欢
    • 1970-01-01
    • 2011-11-24
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2011-07-08
    • 1970-01-01
    • 2016-07-05
    相关资源
    最近更新 更多