【问题标题】:Delete All Between ( and )删除 ( 和 ) 之间的所有内容
【发布时间】:2016-05-11 22:31:02
【问题描述】:

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

它在第一个“)”之后停止。是否有可能它也删除括号内的括号?

【问题讨论】:

    标签: php preg-replace parentheses


    【解决方案1】:

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

    \(.*\)
    

    注意:* 必须是贪心的才能使这个工作。所以请确保未设置不贪婪的modifier U(默认)。


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

    那里的示例\(((?>[^()]+)|(?R))*\) 运行良好。

    【讨论】:

      【解决方案2】:

      这是给你的代码:

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

      输出将是:“你好,我叫弗兰克”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-24
        • 2017-12-31
        • 2018-07-15
        相关资源
        最近更新 更多