Удалить все между (и)

Я хочу заменить все между ( а также ), И это также работает с этим 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)"

останавливается после первого «)». Возможно ли, что он также удаляет скобки внутри скобок?

0

Решение

Совпадение всего, начиная с первого ( а затем вернуться к последнему появлению ):

\(.*\)

Замечания: * должно быть жадным, чтобы это работало. Поэтому убедитесь, что модификатор U не установлено (по умолчанию).


Если ваши строки могут содержать несколько вхождений независимых заключенных в скобки подстрок, т.е. "Hello (my name is) Frank (nicer (guy) thank you)"тогда тебе нужна рекурсивный паттерн.

Пример \(((?>[^()]+)|(?R))*\) там работает довольно хорошо.

2

Другие решения

Вот код для вас:

<?php
$in = '"Hello my name is Frank (nicer guy)"';
$out = preg_replace('/\s\(.*\)/','',$in);
echo $out;
?>

Вывод будет: «Привет, меня зовут Фрэнк»

0

По вопросам рекламы [email protected]