从字符串中删除()

Jam*_*mes 1 php regex string brackets

$item = "(1) Robin Hood (hero)";
Run Code Online (Sandbox Code Playgroud)

括号内的文字可以更改.

如何从字符串中删除其中包含文本的所有括号?

我们应该得到这个:

$item = "Robin Hood";
Run Code Online (Sandbox Code Playgroud)

谢谢!

cod*_*ict 6

您可以使用preg_replace:

$item = preg_replace('/\(.*?\)/s','',$item);
Run Code Online (Sandbox Code Playgroud)

看起来您还想在替换后删除前导和尾随空格.
您可以将trim其用作:

$item = trim( preg_replace('/\(.*?\)/s','',$item));
Run Code Online (Sandbox Code Playgroud)

使用的正则表达式是\(.*?\):

  • (并且)是用于分组的正则表达式元字符.为了匹配文字的paranthesis你需要通过在它们前面使用它来逃避它们\.
  • 您可以使用括号匹配括号之间的任意文本.*?.您也可以使用相同的方法[^)]*
  • .默认情况下与换行符不匹配.要使匹配换行符,我们使用s修饰符.没有它,我们将无法进行替换"(hello\nworld) Hi"