全部删除(和)

时间:2016-02-02 22:26:12

标签: php preg-replace parentheses

我想要替换()之间的所有内容。它也适用于这个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 个答案:

答案 0 :(得分:2)

匹配从第一个(开始的所有内容,然后回溯到最后一次出现的)

\(.*\)

注意: *必须贪婪才能发挥作用。因此,请确保未设置不合格modifier U(默认)。

如果您的字符串可以包含多个独立的带括号的子字符串,即"Hello (my name is) Frank (nicer (guy) thank you)",则需要recursive pattern

示例\(((?>[^()]+)|(?R))*\)效果很好。

答案 1 :(得分:0)

以下是您的代码:

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

输出将是:&#34;您好我的名字是Frank&#34;

相关问题