我认为我想要做的事情必定是不可能的;难以置信的困难;或者很简单,我只是不知道如何正确地向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);
现在,一方面,这感觉非常聪明。而且,它也感到疯狂。有更好/可能的方法吗?
答案 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>