【问题标题】:Write <?xml?> in PHP file在 PHP 文件中写入 <?xml?>
【发布时间】:2017-01-11 22:10:08
【问题描述】:

我有一个index.php 文件:

<?php
// Load resources shared across the website
include '../path/to/other_file.php';
?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  xml:lang="es" lang="es" prefix="og: http://ogp.me/ns#">
<head prefix="article: http://ogp.me/ns/article#">
    <title>Title</title>
</head>

<body>

<!-- Code -->

</body>
</html>

当我加载它时,它什么也没显示。我用this online tool 看看发生了什么。问题出现在第 5 行。

可能是我使用&lt;? 来介绍XHTML 文档,但我猜PHP 认为下面的单词应该是php (&lt;?php //CODE ?&gt;) 而不是xml (&lt;?xml version="1.0" encoding="UTF-8"?&gt;)

我该如何解决?我认为这称为“解析”或“分隔”字符。

【问题讨论】:

    标签: php html xml xhtml


    【解决方案1】:

    您可以使用简单的 echo 解决此问题:

    include '../path/to/other_file.php';
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    ?>
    

    【讨论】:

      【解决方案2】:

      出现问题是因为当您执行&lt;? 时,PHP 认为您正在尝试进入“PHP 模式”,而实际上您正在尝试访问 XML。解决这个问题的简单方法是禁用所谓的“PHP 短标签”,其中 PHP 将 &lt;? 识别为有效的开始标签。

      您可以通过各种方法来做到这一点,所有这些方法都可以有效地做到这一点

      1. 在您的php.ini 中添加short_open_tag=Off
      2. 在指定文件的顶部添加ini_set('short_open_tag', '0');
      3. php_value short_open_tag 0 在你的.htaccess
      4. 使用 &lt;?php echo "&lt;?xml ... ?&gt;"; 添加您的 XML。

      【讨论】:

      • Not 2 - short_open_tagPHP_INI_PERDIR 并且不能用 ini_set() 更改:php.net/manual/en/ini.core.php
      • 真的吗,@AbraCadaver?直到!我会打击它!
      【解决方案3】:

      尝试发送浏览器,php文件是xml文件,有这一行:

      header("Content-type: text/xml");

      在你启动 php 标签之后把它放好,这样脚本就可以覆盖标题

      【讨论】:

      • 问题出在服务器上,因为 PHP 不理解 PHP 脚本中的 &lt;?xml
      • 虽然 XHTML 文件肯定需要发送 MIME 类型的标头(否则浏览器会认为它是 HTML 文件),这就是 OP 所要问的问题。顺便说一句,application/xhtml+xml 是首选,尽管text/xml 可以正常工作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2013-02-03
      • 2013-09-20
      • 2011-01-15
      相关资源
      最近更新 更多