我有一个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>
当我加载它时,它什么也没显示。我使用这个在线工具查看正在发生的事情。第 5 行出现问题。
可能是我正在使用<?
来介绍XHTML文档,但我想PHP认为以下单词将是php
(<?php //CODE ?>
)而不是xml
(<?xml version="1.0" encoding="UTF-8"?>
)
我该如何解决它?我认为这被称为"解析"或"间隔"字符。
您可以使用简单的 echo 来解决此问题:
include '../path/to/other_file.php';
echo '<?xml version="1.0" encoding="UTF-8"?>';
?>
出现此问题是因为 PHP 认为您在执行<?
时尝试进入"PHP 模式",而实际上您正在尝试访问 XML。对此的简单解决方案是禁用所谓的"PHP 短标签",其中 PHP 将<?
识别为有效的开始标签。
您可以通过各种方法做到这一点,所有这些方法都可以有效地完成相同的工作
- 在
php.ini
中添加short_open_tag=Off
-
在指定文件的顶部添加ini_set('short_open_tag', '0');
php_value short_open_tag 0
在你的.htaccess
- 使用
<?php echo "<?xml ... ?>";
添加 XML。
尝试向浏览器发送 php 文件是带有以下行的 xml 文件:
header("Content-type: text/xml");
在启动 PHP 标签后将其正确放置,以便脚本可以覆盖标头