PHP str_replace每次都有不同的值?

时间:2012-04-29 05:02:38

标签: php str-replace

我想为HTML字符串执行str_replace,每次查找匹配项时该值也会增加。

$link = 1;

$html = str_replace($this->link, $link, $html);

这将替换all in one,并且使用相同的字符串$ link,我希望每次找到匹配时$ link都会增加。有可能吗?

非常感谢

2 个答案:

答案 0 :(得分:2)

您可以使用正则表达式返回它执行的替换次数。

<?php
$string = "red green green blue red";

preg_replace('/\b(green)\b/i', '[removed]', $string, -1 , $results);
echo $results; // returns '2' as it replaces green twice with [removed]
?>

答案 1 :(得分:1)

如果我理解正确(你希望每个匹配都用增长的整数替换),那么鼓励你使用preg_replace_callback的问题上的评论似乎是正确的:

$str = 'Hello World';
$cnt = 0;

function myCallback ( $matches ) {
  global $cnt;
  return ++$cnt;
}

// He12o Wor3d
echo preg_replace_callback( '/\l/', 'myCallback', $str );