PHP str_replace每次都有不同的值?

问题描述:

我想为HTML字符串做一个str_replace,每次找到一个匹配项的值都会增加。PHP str_replace每次都有不同的值?

$link = 1; 

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

这将取代所有在一次,并用相同的字符串$联系,我会在每次发现一个匹配时喜欢$链接增加。可能吗?

非常感谢

+4

使用http:/ /php.net/manual/en/function.preg-replace-callback.php并在您的回调函数中增加计数器。 – 2012-04-29 05:05:44

+0

同意丹。然后简单地计算找到了多少匹配。 – Philip 2012-04-29 05:08:24

如果我理解你正确(您想每场比赛日益增长的整数代替),这似乎对这个问题的意见,鼓励您使用preg_replace_callback是正确的:

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

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

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

这个myCallback,如果它在一个类中呢? echo preg_replace_callback('/ \ l /',$ this-> myCallback,$ str);不工作 – Bruce 2012-04-29 06:15:01

+1

'preg_replace_callback('/ \ l /',array($ this,'myCallback'),$ text);' – Sampson 2012-04-29 06:19:41

+0

preg_replace_callback('/ \ l /','self :: myCallback',$ text) ;这也适用 – Bruce 2012-04-29 23:17:40

您可以使用正则表达式返回有多少替代品呢。

<?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] 
?> 
+0

这个返回0 tho,尝试它 – Bruce 2012-04-29 05:51:27

+0

它的工作原理。忘了更改变量名称。更新答案。 – Menztrual 2012-04-29 05:54:07