Удалите текст между круглыми скобками PHP

Я просто задаюсь вопросом, как я мог удалить текст между рядом круглых скобок и самими круглыми скобками в php.

Пример:

ABC (Test1)

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

Спасибо

60
задан antonjs 18 December 2012 в 15:41
поделиться

3 ответа

$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
152
ответ дан 24 November 2019 в 17:29
поделиться

без Regex

$string="ABC (test)"
$s=explode("(",$string);
print trim($s[0]);
12
ответ дан 24 November 2019 в 17:29
поделиться

Люди, регулярные выражения не могут быть использованы для разбора нерегулярных языков. Нерегулярные языки - это те, которые требуют уточнения состояния (то есть вспоминание, сколько скобок в настоящее время открыты).

Все вышеперечисленные ответы потерпят неудачу в этой строке: «ABC (Hello (World) Как вы)».

Прочитайте анализ HTML HTML HTML HTML: https://blog.codinghorror.com/parsing-html-the-Thulhu-way/ , а затем используйте либо под рукой написанный парсер ( Структура сквозь символы в строке см., Если символ является скобками или нет, поддерживать стек) или используйте Lexer / Parser, способный разбирать в контексте язык.

Также см. Эта статья Википедии на «языке правильно подобранной скобки:» https://en.wikipedia.org/wiki/dyck_language

4
ответ дан 24 November 2019 в 17:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: