【问题标题】:PHP dom replacementPHP dom 替换
【发布时间】:2011-08-29 03:33:29
【问题描述】:

我一直在寻找一段时间,但一直没有想出任何东西。我有一个同时包含 html 和 php 的页面。

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


<? replaceStr("replace_me", "foobar"); ?>

我需要一个函数,将上面的 %% 字符串更改为 foobar 以使 html 看起来像这样:

<div>foobar</div>

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

【问题讨论】:

  • 我不知道你在问什么。
  • 你不能用&lt;?php echo "foobar"; ?&gt;代替%%replace_me%%吗?
  • @mtahmed "我需要一个函数,将上面的 %% 字符串更改为 foobar 以使 html 看起来像这样"
  • @even 没有;我需要该功能,因为它会根据您所在的页面而改变
  • 你不能只回显一个变量,然后在页面顶部设置该变量的值吗?还是在包含文件中使用?或者只是像埃文所说的那样回应必要的东西?我不明白为什么您需要一个函数来执行此操作,除非您尝试为某种模板系统加载和处理现有的 HTML 文件。

标签: php html dom


【解决方案1】:

听起来您正在寻找模板引擎。 Smarty 是 PHP 流行的一种。还有others

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

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

【讨论】:

    【解决方案2】:

    您必须在页面开头附近添加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();
    

    【讨论】:

    • 没问题。乐意效劳。虽然如果你正在寻找更强大的东西,我肯定还是会看看大卫的答案。
    猜你喜欢
    • 2017-03-13
    • 2011-06-04
    • 1970-01-01
    • 2015-11-11
    • 2013-01-24
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 2016-05-10
    相关资源
    最近更新 更多