PHP: замена определенного символа в диапазоне на preg_replace - PullRequest
1 голос
/ 28 июня 2010

Допустим, я пытаюсь заменить каждый символ "A" на "B" внутри двух тегов [lol].

Например:

"[смеется] Это здоровоА действительно есть А [/ lol]"

станет

"[lol] Это здоровоB действительно isB [/ lol]"

Я пытался что-то сделать сам, но это было напрасно. Самое близкое, что у меня есть, это:

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

конечно, это не сработает ...

Буду признателен за любую помощь!

спасибо!

1 Ответ

1 голос
/ 28 июня 2010
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
...