PHP:省略包含在[](){}中的字符串部分

时间:2019-02-22 04:50:13

标签: php regex

是否可以制定一条规则,以一次性删除同时用[]()和{}括起来的字符串的任何部分,而只保留其中的任何部分?

例如,如果我有这样的字符串:

// Input
$string = 'my(apple)[banana][carrot(orange)]food[supply]';

// Output
$string = 'myfood';

我知道如何选择用方括号括起来的字符串的某些部分,但是在这种情况下,我想选择任何未用括号括起来的部分。

这是我当前卡住的正则表达式,可以选择其中的字符:

\[.*?\]|\(.*?\)|\{.*?\}

2 个答案:

答案 0 :(得分:0)

这是解决此问题的方法,

Public Shared Function FindFocusedControl(control As Control) As Control
    Dim container = TryCast(control,IContainerControl)
    While container IsNot Nothing
        control = container.ActiveControl
        container = TryCast(control, IContainerControl)
    End While
    Return control
End Function

这里在工作demo

答案 1 :(得分:0)

我找到了答案:

  $var = 'my(apple)[banana][carrot(orange)]food[supply]';

  echo preg_replace('/\[.*?\]|\(.*?\)|\{.*?\}/', '', $var);