繁体   English   中英

preg_replace没有按照我的期望做

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM