【发布时间】:2012-04-15 02:16:40
【问题描述】:
我需要用其他东西替换方括号中任何文本的每个实例,每个方括号块都被单独处理。例如,以:
开头[quote author=joe link=topic=765.msg4476#msg4476 date=1330380346] This is the quoted text [/quote] This is the new post
变成:
** This is the quoted text ** This is the new post
我尝试使用以下方法:
preg_replace('/\[.*\]/', '**', $msgtext);
我得到的是:
** This is the new post
它似乎从整个字符串中的第一个 '[' 字符到最后一个 ']' 字符匹配,即使在较大的文本中有一堆单独的方括号块。如何更改我的正则表达式以单独替换方括号之间的每个块?显然,正则表达式中的 .* 匹配所有内容,包括右括号,直到最后一个,但我希望它在遇到的第一个右括号处停止,然后在整个字符串中重复该逻辑。
【问题讨论】:
标签: php regex pattern-matching