【发布时间】:2016-08-05 01:33:46
【问题描述】:
是否可以将 PHP 代码放入 XML 文档中以供稍后执行?例如,我可以说 <element value="<?php echo date('Y'); ?>" /> 吗?
谢谢!
【问题讨论】:
-
好的,我已经回答了我自己的问题...请查看更新后的问题。
-
请将您的解决方案作为答案发布并接受,或接受其他人的答案之一。
是否可以将 PHP 代码放入 XML 文档中以供稍后执行?例如,我可以说 <element value="<?php echo date('Y'); ?>" /> 吗?
谢谢!
【问题讨论】:
这是可能的,但我建议将其放在 CDATA 块内,这样您就不必转义 < 和类似字符:
<element>
<![CDATA[
<?php echo date('Y'); ?>
]]>
</element>
【讨论】:
如果您将 XML 文件作为 PHP 脚本运行,则可以。脚本的输出将是有效的 XML,但包含内联 PHP 的文件很可能不是是有效的 XML。
【讨论】:
要强制您的网络服务器在 XML 文件中执行 PHP,请将 .xml-files 的 MIME 类型更改为 application/x-httpd-php,并将此行添加到 .htaccess:
AddType application/x-httpd-php .xml
现在所有 XML 文件都被网络服务器以与 PHP 文件相同的方式处理:
<?xml version="1.0" encoding="UTF-8"?>
<servertime>
<?php
echo date('c');
header('Content-Type: application/xml; charset=utf-8');
?>
</servertime>
请注意,header-定义用于将文件的 MIME 类型更正回application/xml。否则浏览器会将其视为 HTML,从而阻止它显示漂亮的 DOM 树(或任何默认的 XML 处理方式......)。即使该文件不打算在浏览器中打开,也永远不会很好伪造文件的 MIME 类型,所以请不要忘记这一行 ;)
此解决方案的缺点:现在 所有 您的.htaccess 访问范围内的 XML 文件将被视为 php,因此您必须更改任何 XML 文件的 MIME 类型通过 PHP 在同一个文件夹中。解决方法:将 php 破解的 XML 和 .htaccess 移动到单独的文件夹中。
【讨论】:
PHP 程序可以输出您喜欢的任何类型的内容,但是默认情况下(如果与 mod_php 之类的 Web 模块一起使用)会输出 text/html 内容类型,因此您需要这样做:
<?php
header('Content-Type: application/xml; charset=utf-8');
?>
(如果适用,请替换更合适的内容类型)。
您还需要配置您的网络服务器以识别该文件应被视为 PHP 而不是作为静态数据提供。这通常通过给文件一个 .php 扩展名来实现。如果您想使用不同的文件命名约定,请查阅您的网络服务器和 PHP 模块的手册。
【讨论】:
当然可以。你可以有类似的东西:php -f yourfile.xml。
【讨论】:
是的。
使用这个示例代码,文件名为“example.php”:
<?php
ob_start();
require_once "relative/path/to/file.xml";
$xml_with_php_values = ob_get_clean();
?>
将php放入xml文件中,就像放入html一样。
【讨论】:
<element value="<?php echo date('Y'); ?> />
【讨论】: