我一直在寻找一段时间,但却未能提出任何建议。我有一个包含html和php的页面。
<div>%%replace_me%%</div>
<? replaceStr("replace_me", "foobar"); ?>
我需要一个将上面的%%字符串更改为foobar的函数,以使html看起来像这样:
<div>foobar</div>
文本始终被百分号包围,但并不总是包含在div中。页面上会有php以及%% vars,因此将页面存储在$ var和str替换中对我来说没有用。
答案 0 :(得分:1)
听起来你正在寻找一个模板引擎。 Smarty是PHP的流行版本。还有others。
理解在服务器端代码(PHP)的上下文中,没有“DOM”,甚至没有“HTML”,就像你暗示的那样。 .php文件中有HTML,但你无法真正与它进行交互。在PHP引擎解释PHP代码之后,它只是等待向客户端提供服务的文件中的文本。
DOM解析和所有这些东西在内容传递到客户端后在浏览器中发生,这是在服务器端代码运行之后。还有PHP DOM parsers,但它们用于在PHP代码中使用HTML并对其进行操作,而不是与同一.php文件中PHP代码之外的HTML标记进行交互。
答案 1 :(得分:1)
您必须在页面开头附近添加ob_start()
以确保输出已缓冲,并且在您有机会解析之前不会将其发送给用户。然后,我会尝试收集对replaceStr()
的所有来电,直到输出所有可能的%%
标记,并且您已准备好一次性替换它们。然后,这应该做的伎俩:
function replace_str(&$body, $tag, $replace) {
str_replace('%%'.$tag.'%%', $replace, $body);
}
$body = ob_get_clean();
replaceStr($body, 'replace_me', 'foobar');
// other calls to replaceStr...
echo $body
ob_end_flush();