用PHP中的渐进数替换字符串(str_replace)

时间:2017-02-17 08:04:09

标签: php str-replace breadcrumbs

我有一个以这种方式调用的php函数

breadcrumbs_func();

标记这个面包屑:

<div class="breadcrumbs" itemscopeitemtype="http://schema.org/BreadcrumbList">
  <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
    <a href="#" itemprop="item"><span itemprop="name">Home</span></a>
<meta itemprop="position" content="nprog">
  </span>
  <span itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
    <a href="#" itemprop="item" ><span itemprop="name">Category</span></a>
    <meta itemprop="position" content="nprog">
  </span>
</div>

当我调用此函数时,我想以这种方式用渐进数字(1-2-3 ......)替换两个content="nprog"

content="1"content="2"

我尝试使用str_replace();,但它似乎不起作用:

$breadcrumbs =   breadcrumbs_func();
$new_breadcrumbs =   str_replace("nprog", "1", $breadcrumbs);
echo $new_breadcrumbs;

这会返回面包屑而不做任何更改。

任何帮助?

2 个答案:

答案 0 :(得分:1)

这是一种方式:

function str_replace_first($search, $replace, $subject) {
    $pos = strpos($subject, $search);
    if ($pos !== false) {
        return substr_replace($subject, $replace, $pos, strlen($search));
    }
    return $subject;
}
$new_breadcrumbs =  str_replace_first("nprog", "1", $breadcrumbs);
for($i=2; $i<=substr_count($breadcrumbs,"nprog");$i++){
  echo $i;
$new_breadcrumbs =str_replace_first("nprog", $i, $new_breadcrumbs);
}
echo $new_breadcrumbs;

https://repl.it/FnSp/1

答案 1 :(得分:0)

好的,我找到了一个将echo结果存储在$ var:

中的解决方案
 <?php ob_start();
       breadcrumbs();
       $breadcrumbs = ob_get_contents();
       ob_end_clean();

我希望这不会影响稳定性或性能!