在我的页面顶部,我有一个面包屑。
ob_start();
<li>##product##</li>
<li>##category##</li>
在此之后,我运行mysql查询来获取变量:
$product
$category
然后我跑:
<?php echo str_replace("##product##", $product, ob_get_clean()) ?>
<?php echo str_replace("##category##", $category, ob_get_clean()) ?>
变量$ product被替换,我看到第二个变量不会被替换,因为我已经为产品调用了ob_get_clean())。
如何使用ob_get_clean函数替换两个字符串?
答案 0 :(得分:1)
将ob_get_clean()
的结果分配给变量:
$ob = ob_get_clean();
$ob = str_replace("##product##", $product, $ob);
$ob = str_replace("##category##", $category, $ob);
echo $ob;
答案 1 :(得分:1)
使用ob_get_contents而不是ob_get_clean。
$product = 'product 1';
$category = 'category1';
ob_start();
echo '<li>##product##</li>
<li>##category##</li>';
$template = ob_get_contents();
$template = str_replace("##product##", $product, $template);
$template = str_replace("##category##", $category, $template);
ob_end_clean();
echo $template;
答案 2 :(得分:0)
试试这个:
$find = array("##product##", "##category##");
$replace = array($product, $category);
echo str_replace($find, $product, ob_get_clean());
答案 3 :(得分:0)
问题是,你是从一个来源复制变量。
你能做的最好的是:
$from = array("##product##", "##category##");
$to = array($product, $category);
echo str_replace($from, $to, ob_get_contents());
或者您可以在一行中运行多个功能。注意$replaced
与输入和输出相同:
$replaced = ob_get_contents();
$replaced = str_replace("##product##", $product, $replaced);
$replaced = str_replace("##category##", $category, $replaced);
echo $replaced;
我知道,它实际上是使用第一种方法,因为你只用数据提供它一次。
答案 4 :(得分:0)
改为使用ob_get_contents()
:
<?php echo str_replace("##product##", $product, ob_get_contents()) ?>
<?php echo str_replace("##category##", $category, ob_get_contents()) ?>
如果使用ob_get_clean()
,则在第一次调用后删除输出缓冲区。
答案 5 :(得分:0)
ob_get_clean()
基本上同时执行ob_get_contents()
和ob_end_clean()
。
<?php
ob_start();
echo str_replace("##product##", $product, ob_get_contents());
echo str_replace("##category##", $category, ob_get_contents());
?>