0

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

我想要做的是以下内容:

出于模板的目的,我将 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);

现在,一方面,这感觉非常聪明。而且,它也让人觉得很疯狂。有没有更好/可能的方法来做到这一点?

4

2 回答 2

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标签并切换到“代码模式”。

于 2013-09-06T18:32:19.463 回答
0

相反,您的 HTML 文件必须是 PHP 文件。见下文:

文件:test.php

<html>
<head>
</head>
    <body>
        <? echo 'My PHP embedded in HTML'; ?>
        <img src="<? echo $imagePath; ?>"/>
    </body>
</html>
于 2013-09-06T18:26:09.540 回答