我在一段文字中有以下图例,我需要用任何内容替换它,以便它从段落中消失。
发送包含CONSULTANTS [45416,2010-05-11]
我需要删除[]以及[]中的所有内容,而不是[]中的字符可以是任何内容
我尝试了以下但这只删除了[]
$par = preg_replace('/[\[*\]]/','',$par);
答案 0 :(得分:6)
你可以这样做:
$par = preg_replace('/\[.*?\]/s','',$par);
说明:
/ - Start delimiter
\[ - A literal [
.*? - A non-greedy anything
\] - A literal ]
/ - End delimiter
s - Modifier to make . match even a newline
使替换速度提高一点:
$par = preg_replace('/\[[^\]]*\]/s','',$par);
说明:
/ - Start delimiter
\[ - A literal [
[ - Start of character class
^ - Char class negator
] - End of character class
\] - A literal ]
/ - End delimiter
答案 1 :(得分:2)
罗兰,
您要匹配的是:
[\[*\]]
这是'[','*',']'字符中的任何一个。你真正想要的是一个以'['开头并以']结尾的模式。中间可以有任何非']'字符。所以正确的模式是:
\[[^\]]*\]
所以这个:
$par = preg_replace("/\[[^\]]*\]/", "", $par);
应该有用。
感谢。