如何使用带有单个preg_replace的REGEX从字符串中删除许多不同的括号[](){}和内容?

时间:2012-04-04 16:03:39

标签: php regex preg-replace

目前我正在使用

$str = preg_replace("/\([^\)]+\)/", "", $str); // Remove () and Content
$str = preg_replace("/\[[^\)]+\]/", "", $str); // Remove [] and Content
$str = preg_replace("/\{[^\)]+\}/", "", $str); // Remove {} and Content
$str = preg_replace("/[^a-zA-Z0-9]/", "", $str);  // Remove all non-alphanumeric characters

我想知道是否有办法将这些组合成一个正则表达式语句

1 个答案:

答案 0 :(得分:5)

您可以使用|组合这些:

(\([^\)]+\)|\[[^\]]+\]|\{[^\}]+\})|[^A-Za-z0-9])

但在你的情况下,我通常只是通过字符串并手动解析它 使用“状态变量”($paren_open$brace_open$curly_open)来了解您是否忽略了字符。

即使它看起来不快(因为你必须经历每个角色),它比正则表达式要快得多,因为正则表达式会做一些更复杂的事情。


<强>资源: