Я хочу заменить все между (
а также )
, И это также работает с этим preg_replace ().
$return = preg_replace("/\([^)]+\)/", "", $return);
Если мой $return
как "Hello my name is Frank (nicer guy)"
строка "Hello my name is Frank"
Но в случае, если между круглыми скобками находятся следующие круглые скобки, это не сработает. Например:
до:
"Hello my name is Frank (nicer (guy) thank you)"
после
"Hello my name is Frank thank you)"
останавливается после первого «)». Возможно ли, что он также удаляет скобки внутри скобок?
Совпадение всего, начиная с первого (
а затем вернуться к последнему появлению )
:
\(.*\)
Замечания: *
должно быть жадным, чтобы это работало. Поэтому убедитесь, что модификатор U
не установлено (по умолчанию).
Если ваши строки могут содержать несколько вхождений независимых заключенных в скобки подстрок, т.е. "Hello (my name is) Frank (nicer (guy) thank you)"
тогда тебе нужна рекурсивный паттерн.
Пример \(((?>[^()]+)|(?R))*\)
там работает довольно хорошо.
Вот код для вас:
<?php
$in = '"Hello my name is Frank (nicer guy)"';
$out = preg_replace('/\s\(.*\)/','',$in);
echo $out;
?>
Вывод будет: «Привет, меня зовут Фрэнк»