PHP:用preg_replace替换范围中的特定char

时间:2010-06-27 21:12:11

标签: php regex preg-replace

让我们说我试图在两个[lol]标签内用“B”替换每个“A”字符。

例如:

“[lol]这很棒A真的是[/ lol]”

将成为

“[lol]这很棒B真的是B [/ lol]”

我试图自己做点什么,但这是徒劳的。 我得到的最接近的是:

preg_replace("%(\[lol\])"."(.*?)([A]+?)(.*?)"."(\[/lol\])%s", "$1$2B$4$5", $haystack);

当然它不会这样工作......

我会感激任何帮助!

谢谢!

1 个答案:

答案 0 :(得分:1)

echo preg_replace(
    '/(?<=\[lol\]).*?(?=\[\\/lol\])/e',
    'str_replace("A", "B", "\\0")',
    'AAA sdf [lol]It\'s greatA really isA[/lol] AAAA ' .
        'sdfd [lol]It\'s greatA really isA[/lol] AA sf'
);

给出

AAA sdf [lol]It\'s greatB really isB[/lol] AAAA sdfd [lol]It\'s greatB really isB[/lol] AA sf