2016-02-02 3 views
0

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

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

ответ

2

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

\(.*\) 

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


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

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

0

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

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

выход будет: «Здравствуйте, меня зовут Фрэнк»

 Смежные вопросы

  • Нет связанных вопросов^_^