用匹配索引替换字符串中的序列

时间:2010-12-21 10:34:56

标签: php regex

在PHP中,如果我在字符串“a b a b a b c”中替换“a”,我如何将其替换为匹配的索引(即“1 b 2 b 3 b c”)?

3 个答案:

答案 0 :(得分:3)

改为使用preg_replace_callback

PHP 5.3.0示例(未测试):

$i = 0;
preg_replace_callback("/a/", function( $match ) {
    global $i;
    return ++$i;
}, "a b a b a b c");

答案 1 :(得分:2)

您确定需要preg _ *?

我将如何做到这一点:

$numerals = range(1, 10);
$str = str_replace('a', $numerals, $str);

遗憾地被忽略且经常被忽略的str_replace()函数可以接受数组作为参数。如果数组作为第二个参数传递,它将使用相应数组的元素更改搜索字符串的每次出现。

答案 2 :(得分:2)

$str = 'a b a ba a';
$count = 1;
while(($letter_pos = strpos($str, 'a')) !== false) {
    $str = substr_replace($str, $count++, $letter_pos, 1);
}