【问题标题】:Extra content at the end of the document PHP and XML文档末尾的额外内容 PHP 和 XML
【发布时间】:2012-01-13 20:29:47
【问题描述】:

我在尝试使用 PHP 生成 XML 文件时遇到了一个奇怪的问题。问题是,源代码末尾出现了一个奇怪的问号。我收到错误消息:“文档末尾有额外内容”

我正在运行这个脚本:

<?php
header("Content-Type: application/xml");
echo "<?xml version=\"1.0\"?>";
?>

<Module>
      <ModulePrefs title="Ngram Extractor"
        author="interedition team"
       description="Ngram Extractor"
        scrolling="true"/>
        <Content type="html">
        Test
        </Content>
</Module>​

当我打开这是一个浏览器时,我收到状态错误,源代码如下所示。注意末尾的奇怪问号。

 <?xml version="1.0"?>
<Module>
      <ModulePrefs title="Ngram Extractor"
        author="interedition team"
       description="Ngram Extractor"
        scrolling="true"/>
        <Content type="html">
        Test
        </Content>
</Module>?

请帮忙。

【问题讨论】:

  • 代码中某处的虚假回声,或未包含在 标签中的文本
  • 这个奇怪的字符可能出现在你的源文件的末尾,或者是因为你没有用换行符结束源文件中的 XML。
  • 如何用换行符结束 XML?
  • 一般来说,浏览器似乎并没有识别出这是一个 xml 文档?我不确定我做错了什么。
  • @Jpsy 很高兴知道这也让我的问题更加奇怪:)

标签: php xml


【解决方案1】:

您的文件末尾有一个 零宽度空格 字符 - UTF-8 代码 E2 80 8B。它位于&lt;/Module&gt; 之后。以十六进制模式查看您的文件。 这个额外的字符会阻止您的浏览器将其识别为有效的 XML,并且 - 根据所使用的浏览器 - 显示为问号或根本不显示。

删除多余的字符,你会没事的。

【讨论】:

    【解决方案2】:

    可能是您使用带有 BOM 编码的 UTF-8。检查一下

    【讨论】:

    • @Jeff 您可以在记事本++ 编辑器中查看。主菜单中的“编码”
    【解决方案3】:

    我真的没有答案,接受我的编辑没有显示问号。但是我在notepad2中打开了文件,你瞧,问号在那里。很奇怪。感谢您的帮助。

    【讨论】:

    • 正如我在上面的回复中所说:这个问号是一个不可见的 UTF-8 字符。它甚至在 StackOverflow 上将其复制到您的代码副本中 - 尽管它无法看到(即使在 HTML 代码视图中也看不到)。但是当复制到十六进制编辑器中时,UTF-8 代码 E2 80 8B 会显示在代码的末尾。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    相关资源
    最近更新 更多