Удалить текст между скобками PHP

Мне просто интересно, как я могу удалить текст между скобками и скобками в php.

Пример :

ABC (Test1)

Я бы хотел, чтобы он удалял (Test1) и оставлял только ABC

благодаря

$string = "ABC (Test1)"; echo preg_replace("/\([^)]+\)/","",$string); // 'ABC ' 

preg_replace – это обычная процедура замены регулярных выражений на основе perl. То, что делает этот скрипт, соответствует всем вхождениям открывающей круглой скобки, за которыми следуют любое количество символов, а не закрывающая скобка, и снова следует закрывающая скобка, а затем удаляет их:

Распределение регулярных выражений:

 / - opening delimiter (necessary for regular expressions, can be any character that doesn't appear in the regular expression \( - Match an opening parenthesis [^)]+ - Match 1 or more character that is not a closing parenthesis \) - Match a closing parenthesis / - Closing delimiter 

без регулярного выражения

 $string="ABC (test)" $s=explode("(",$string); print trim($s[0]); 
 $string = "ABC (Test1(even deeper) yes (this (works) too)) outside (((ins)id)e)"; $paren_num = 0; $new_string = ''; foreach($string as $char) { if ($char == '(') $paren_num++; else if ($char == ')') $paren_num--; else if ($paren_num == 0) $new_string .= $char; } $new_string = trim($new_string); 

Он работает путем циклического прохождения каждого символа, считая круглые скобки. Только когда $paren_num == 0 (когда он находится вне всех круглых скобок) добавляет символы в нашу результирующую строку $new_string .

Принятый ответ отлично подходит для не вложенных круглых скобок. Небольшое изменение в регулярном выражении позволяет работать с вложенными скобками.

 $string = "ABC (Test1(even deeper) yes (this (works) too)) outside (((ins)id)e)"; echo preg_replace("/\(([^()]*+|(?R))*\)/","", $string); 

Люди, регулярные выражения НЕ МОГУТ использоваться для анализа нерегулярных языков. Неправильными языками являются те, которые требуют интерпретации состояния (т. Е. Запоминания того, сколько скобок в настоящее время открыто).

Все приведенные выше ответы не будут выполнены в этой строке: «ABC (привет (мир), как вы)».

Прочтите описание партитуры Jeff Atwood The Cthulhu Way: http://www.codinghorror.com/blog/archives/001311.html , а затем используйте либо написанный вручную синтаксический анализатор (цикл через символы в строке, см., Если символ является скобкой или нет, поддерживает стек) или использует lexer / parser, способный анализировать контекстно-свободный язык.

Также см. Эту статью в Википедии «язык правильно подобранных скобок: http://en.wikipedia.org/wiki/Dyck_language

Большинство методов quik (без preg):

 $str='ABC (TEST)'; echo trim(substr($str,0,strpos($str,'('))); 

Если вы не хотите урезать пробелы в конце слова, просто удалите функцию trim из кода.

 $str ="ABC (Test1)"; echo preg_replace( '~\(.*\)~' , "", $str );