[英]preg_replace not doing what I expect
我在文本的段落中具有以下模式,因此我无需替换任何内容,以便其从该段落中消失。
句子包含CONSULTANTS [45416,2010-05-11]
我需要删除[],并且删除这些[]中的所有内容,而不是[]中的字符可以是任何东西
我尝试了以下操作,但这仅删除了[]
$par = preg_replace('/[\[*\]]/','',$par);
你可以做:
$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
罗兰
您要匹配的是:
[\[*\]]
这是任何'[','*',']'字符。 您真正想要的是一个以'['开始,以']'结尾的模式。 中间可以有任何非']'字符。 因此正确的模式是:
\[[^\]]*\]
所以这:
$par = preg_replace("/\[[^\]]*\]/", "", $par);
应该管用。
谢谢。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.