【问题标题】:PHP code inside XML?XML中的PHP代码?
【发布时间】:2016-08-05 01:33:46
【问题描述】:

是否可以将 PHP 代码放入 XML 文档中以供稍后执行?例如,我可以说 <element value="<?php echo date('Y'); ?>" /> 吗?

谢谢!

【问题讨论】:

  • 好的,我已经回答了我自己的问题...请查看更新后的问题。
  • 请将您的解决方案作为答案发布并接受,或接受其他人的答案之一。

标签: php xml


【解决方案1】:

这是可能的,但我建议将其放在 CDATA 块内,这样您就不必转义 < 和类似字符:

<element> 
   <![CDATA[ 
      <?php echo date('Y'); ?>
   ]]>
</element>

【讨论】:

    【解决方案2】:

    如果您将 XML 文件作为 PHP 脚本运行,则可以。脚本的输出将是有效的 XML,但包含内联 PHP 的文件很可能不是是有效的 XML。

    【讨论】:

      【解决方案3】:

      要强制您的网络服务器在 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 移动到单独的文件夹中。

      【讨论】:

      • 我不认为这是一个好的或安全的想法。
      【解决方案4】:

      PHP 程序可以输出您喜欢的任何类型的内容,但是默认情况下(如果与 mod_php 之类的 Web 模块一起使用)会输出 text/html 内容类型,因此您需要这样做:

      <?php
          header('Content-Type: application/xml; charset=utf-8');
      ?>
      

      (如果适用,请替换更合适的内容类型)。

      您还需要配置您的网络服务器以识别该文件应被视为 PHP 而不是作为静态数据提供。这通常通过给文件一个 .php 扩展名来实现。如果您想使用不同的文件命名约定,请查阅您的网络服务器和 PHP 模块的手册。

      【讨论】:

        【解决方案5】:

        当然可以。你可以有类似的东西:php -f yourfile.xml

        【讨论】:

          【解决方案6】:

          是的。

          使用这个示例代码,文件名为“example.php”:

          <?php
          ob_start();
          require_once "relative/path/to/file.xml";
          $xml_with_php_values = ob_get_clean();
          ?>
          

          将php放入xml文件中,就像放入html一样。

          【讨论】:

            【解决方案7】:
            <element value="&lt;?php echo date('Y'); ?&gt; />
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-09-03
              • 2017-04-17
              • 1970-01-01
              • 2017-11-30
              • 1970-01-01
              • 1970-01-01
              • 2011-07-15
              • 1970-01-01
              相关资源
              最近更新 更多