PHP删除[和]括号之间的文本

时间:2013-12-27 17:44:48

标签: php regex string

我需要删除[和]括号之间的文字(以及括号)。

例如:

你好,[你怎么样]

必须成为:

您好,

并且,字符串如:

你好,[怎么] [是]你

必须成为:

你好,你

有一个正则表达式吗?

4 个答案:

答案 0 :(得分:4)

您只需要使用[]功能删除preg_replace之间的所有内容。

$a = 'hello, [how][are] you';

echo preg_replace('#\s*\[.+\]\s*#U', ' ', $a); // hello, you

正则表达式捕获前后的每个空格,并用一个空格替换它。

请注意,[]是正则表达式中的保留字符,您需要使用\转义它们。如果您希望在字符串中写入[](两者之间没有任何内容),则可以转换.*中的.+

答案 1 :(得分:3)

如果要处理嵌套括号和额外的水平空格,可以使用此方法:

$txt = preg_replace('~\h*\[(?:[^][]+|(?R))*+]\h*~', ' ', $txt);

或展开循环:

$txt = preg_replace('~\h*\[[^][]*+(?:(?R)[^][]*)*+]\h*~', ' ', $txt);

答案 2 :(得分:0)

这是怎么回事?

print preg_replace('/\[[^\[\]]*\]/', '', $str);

答案 3 :(得分:0)

使用此模式\[.*?\](?![^\[\]]*\])来处理嵌套Demo