preg_replace()模式删除php中的括号和内容

时间:2013-03-31 07:08:10

标签: php design-patterns preg-replace

我想使用preg_replace()删除包含其内容的括号,但我无法在模式中使用延迟(非贪婪),因为结束括号是结束字符,括号之间的文本总是随机字符长度,可以包含数字,下划线和连字符。

代码 -

$array = array(
   "Text i want to keep (txt to remove)",
   "Random txt (some more random txt)",
   "Keep this (remove)",
   "I like bananas  (txt)"
);

$pattern = "@pattern@";
foreach($array as $new_txt){
   $new_outputs .= preg_replace($pattern, '', $new_txt)."\n";
}
echo $new_outputs;

通缉输出 -

Text i want to keep
Random txt
Keep this
I like bananas

我不使用正则表达式,找不到任何解决问题的方法。

3 个答案:

答案 0 :(得分:9)

以下正则表达式应该这样做:

$pattern = '@\(.*?\)@';

.*?是任何事物的非贪婪匹配。

答案 1 :(得分:3)

$new_outputs .= preg_replace('@\([^\)]*\)$@','',$new_txt);

答案 2 :(得分:2)

这可能会对您有所帮助:

$pattern = "/\([^)]*\)+/";
foreach($array as $new_txt){
    $new_outputs .= preg_replace($pattern, '', $new_txt)."\n";
}