У меня есть это регулярное выражение:
https://regex101.com/r/Eaj73B/5
Как видно, оно соответствует группе 1 и группе 2 из заданной строки.
Но когда я использую preg_replace в php, он заменяет не группу 2 полного совпадения:
preg_replace('/\[(\w+)[^\]]*]([^\[]+\[\\?\/\1\])?/', '', $string)
Как заменить полное совпадение?
ОБНОВЛЕНИЕ:
В тестере regex101.com регулярное выражение действительно хорошо работает. Но на реальном PHP сервере он работает не так, как ожидалось. См. Ниже:
Протестировано на 2 разных серверах с php7 .2 с помощью этого метода, но это результат:
public function TestReplace(){
$string = 'x[embed]some text or url[/embed]x';
return preg_replace('/\[(\w+)[^\]]*]([^\[]+\[\\?\/\1\])?/', '', $string);
}
возвращает:
xsome текст или url [/ embed] x
Таким образом, он заменяет только [embed] на реальном php7 .2 сервере. Я действительно не знаю, что я делаю здесь не так ...