将包含PHP标记的HTML写入文件

时间:2013-09-06 18:23:43

标签: php html templates file-io tags

我认为我想要做的事情必定是不可能的;难以置信的困难;或者很简单,我只是不知道如何正确地向Google表达我想要的东西。

我想做的是以下内容:

出于模板的目的,我正在将HTML输出到文件中。但是,我希望该文件包含PHP标记 - 而不是PHP代码的解析值(此值将根据输出文件中包含的脚本进行更改) - 但实际的<?php ?>标记本身 - 包含未修改的代码,这样代码在运行时仍可执行。

这是我想要输出的一个例子:

<html>
      <body>
        <img src="<?php echo IMG_PATH;?>img.jpg" />
      </body>
   </html>

我得到的是错误的组合,取决于我使用的方法。基本上,我需要能够将可解析的PHP代码编写到HTML文件中。现在,这是否是一个好主意是值得商榷的,而且我现在对这个主题并不感兴趣。我只想知道是否存在理智解决方案。

我想出了以下疯狂解决方案:

$content='<html><body><img src="zxzxzx?php echo IMG_PATH; ?qjqjqj" />';
file_put_contents($file,$content);

$command='perl -p -i.bktmp -e "s/zxzxzx/</g" '.$file.' 2>'.$path.'error.log';
$command2='perl -p -i.bktmp -e "s/qjqjqj/>/g" '.$file.' 2>'.$path.'error.log';
exec($command);
exec($command2);

现在,一方面,这感觉非常聪明。而且,它也感到疯狂。有更好/可能的方法吗?

2 个答案:

答案 0 :(得分:3)

您误解了PHP的运作方式。以下代码:

<?php

echo 'This string <?php echo 'contains' ?> some PHP code';

将产生输出

This string <?php echo 'contains' ?> some PHP code

您将获取:

This string contains some PHP code

PHP的解析器不是递归的。嵌入在PHP代码中的PHP代码,例如在字符串中,如上所述,不被视为PHP代码 - 它只是一些文本。

如果你想写出一些PHP代码,那就写出来吧:

$string = 'This string <?php echo 'contains' ?> some PHP code';
file_put_contents('file.php', $string);

您不需要对要写出的字符串中的PHP代码采取任何特殊措施,它只会“正常工作”。

现在,如果您将该字符串放入可以将其作为代码进行评估的上下文中,例如。

eval($string);

然后你将不得不采取措施让PHP看不到开放的<?php标签并切换到“代码模式”。

答案 1 :(得分:0)

相反,您的HTML文件需要是PHP文件。见下文:

文件:test.php

<html>
<head>
</head>
    <body>
        <? echo 'My PHP embedded in HTML'; ?>
        <img src="<? echo $imagePath; ?>"/>
    </body>
</html>