Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP dom替换_Php_Html_Dom - Fatal编程技术网

PHP dom替换

PHP dom替换,php,html,dom,Php,Html,Dom,我已经找了一段时间了,没有找到任何东西。我有一个包含html和php的页面 <div>%%replace_me%%</div> <? replaceStr("replace_me", "foobar"); ?> %%替换\u me%% 我需要一个将上述%%字符串更改为foobar的函数,以使html如下所示: <div>foobar</div> foobar 文本将始终用百分号包围,但不总是用div括起来。页面上会有php以

我已经找了一段时间了,没有找到任何东西。我有一个包含html和php的页面

<div>%%replace_me%%</div>


<? replaceStr("replace_me", "foobar"); ?>
%%替换\u me%%
我需要一个将上述%%字符串更改为foobar的函数,以使html如下所示:

<div>foobar</div>
foobar

文本将始终用百分号包围,但不总是用div括起来。页面上会有php以及%%vars,因此将页面存储在$var和str替换中对我不起作用。

听起来你在寻找模板引擎。这是一个流行的PHP。也有

要理解,在服务器端代码(PHP)的上下文中,没有所谓的“DOM”,甚至没有真正意义上的“HTML”。.php文件中有HTML,但您不能像那样与它进行真正的交互。它只是文件中的文本,在PHP引擎解释PHP代码后,等待向下提供给客户端


一旦内容交付给客户端,即在服务器端代码运行之后,DOM解析和所有这些都会在浏览器中发生。也有,但它们是用于在PHP代码中使用HTML并对其进行操作的,而不是用于与同一.PHP文件中PHP代码之外的HTML标记进行交互。

您必须添加
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();

我不知道你在问什么。你不能用
而不是
%%replace\u me%%
?@mtahmed“我需要一个函数,可以将上面的%%string更改为foobar,使html看起来像这样”@even no;我需要这个函数,因为它会根据您所在的页面而变化。您不可以只回显一个变量,并在页面顶部设置该变量的值吗?或者在包含文件中使用?还是像埃文说的那样只是附和必要的东西?我不明白为什么你需要一个函数来完成这项工作,除非你试图加载并处理某种模板系统的现有HTML文件。没问题。很乐意帮忙。虽然如果你在寻找更强大的东西,我肯定还是会看大卫的答案。