【问题标题】:How to parse PHP syntax in a .html file on server?如何在服务器上的 .html 文件中解析 PHP 语法?
【发布时间】:2011-04-03 22:02:48
【问题描述】:

这感觉像是一个非常n00b的问题,但这里是......

我有一系列 HTML 文件,每个文件都包含少量 HTML 内容(从实时系统导出)。更改文件扩展名是不可行的,因为当我移交我的项目时,我不会是执行此“导出 - 刻录到 CD”过程的人。

这是一个示例页面,它非常基本,它是“01.html”:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="../css/styles.css" />
<title>Introduction</title>
</head>
<body>
<h1 class="chaptertitle">Introduction</h1>
<div>
    <p>FBT is imposed on non-cash benefits provided to employees in addition to their normal cash salary. The main categories of fringe benefit for Administrator User are:</p>
    <ul>
        <li>The private use, or availability for private use, of an employer’s motor vehicles;</li>
    </ul>
</div>
</body>
</html>

文件从主页链接到,在这方面一切正常 - 但我确信我已经看到带有 .html 扩展名的页面解析 PHP 语法,我该如何启用/执行此操作?目前,我认为我可以对上面示例中的“管理员用户”之类的内容进行搜索/替换为:

<?php echo $CFG->username; ?>

...该变量已定义且可用 - 但页面被解析为 HTML。在某些方面这并不奇怪,在某些方面确实如此,就像我说的那样,我确信我已经看到 PHP 代码在一个扩展名为 .html 的文件中解析。

它在 Server2Go 堆栈上运行(用于刻录到 CD),但在测试期间它在 WAMP 堆栈上运行。我无法对 Server2Go 进行太多修改。


确认!抱歉,澄清一下:

&lt;body&gt; 标记内的所有内容都被拉出并在 PHP 上下文中使用,名为“generate_book.php”的页面将拉出的内容显示为 PHP 页面自己的 &lt;body&gt; 标记。

对不起,这有点重要:P

【问题讨论】:

  • 嗯,我通过添加一个配置变量解决了这个问题,然后在字符串替换调用中使用该变量将导出生成的字符串替换为某人可以在配置文件中更新的字符串,然后再刻录到光盘。我可以解决这个问题,因为字符串替换本质上是这些 HTML 文件中唯一的 PHP。我会在...之后关闭这个问题,让任何人快速检查/阅读。

标签: php html parsing file


【解决方案1】:

嗯,我很确定您不太习惯 apache 引擎与 php 一起工作的方式。事实上,这不是一个 php 问题,而是一个 apache 问题(如果你使用的是 apache,我会假设)

最简单的方法是添加.htaccess,内容如下:

AddType application/x-httpd-php .php .html

这基本上告诉 apache 所有.html 文件都应该由 PHP 解析,阅读更多关于它的信息here

你实际看到的,我怀疑是 URL 重写,阅读更多关于 mod_rewrite 的信息。

【讨论】:

    【解决方案2】:

    如果您无法修改服务器的设置,那么您就是 SOL。您必须告诉服务器 .html 文件应被视为 PHP 脚本。没有办法解决这个问题。除非您告诉它,否则它不会神奇地开始通过 PHP 解析器发送它们。

    在 Apache 设置中,只需直接进行配置即可,例如

    AddType application/x-httpd-php .php .htm .html
    

    【讨论】:

      【解决方案3】:

      修改重写

      RewriteEngine on
      RewriteRule ^(.*).html$ $1.php
      

      添加类型

      AddType application/x-httpd-php .htm .html
      

      【讨论】:

        【解决方案4】:

        我通过添加一个配置变量来解决该问题,然后在字符串替换调用中使用该变量将导出生成的字符串替换为某人可以在配置文件中更新的字符串,然后再刻录到 CD。我可以解决这个问题,因为字符串替换本质上是这些 HTML 文件中唯一的 PHP。我会在...之后关闭这个问题,让任何人快速检查/阅读。

        【讨论】:

        • 这个答案解决了 OP 的问题(是的,我意识到这是 OP 的帖子),但它没有回答问题。由于这个问题在搜索中出现了一个无用的选定答案,因此我对无用的答案投了反对票。抱歉,Danjah,但这是为了网站的最佳选择。
        猜你喜欢
        • 2013-10-21
        • 2013-07-03
        • 2019-01-11
        • 2019-05-17
        • 2011-09-11
        • 1970-01-01
        • 2021-10-28
        • 1970-01-01
        相关资源
        最近更新 更多