PHP如何在匹配/通配符/匹配后查找字符串

时间:2014-08-27 20:26:03

标签: php regex string

说我有以下字符串,$ mytext:

[QUOTE=FirstUserRANDOMNUMBER]First user's post[/QUOTE]

Great post, FirstUser

[QUOTE=SecondUserRANDOMNUMBER]Second user's post[/QUOTE]

Awful post. I didn't like it.

给定用户名,如何在引用的用户下方找到该文本? (忽略RANDOMNUMBER)

我希望能够输入" SecondUser"进入一个函数并让它返回:"糟糕的帖子。我不喜欢它。"

基本上,我只想要引用用户的响应。

我以为我根据以下内容在$ mytext上做了一个substr:

strpos($username, $mytext) + strlen("[QUOTE=$username") + strlen("[/QUOTE]")

但我不知道如何在[QUOTE = $ username和[/ quote]

的下一个实例之间获取通配符文本的长度

这必须支持$ mytext中出现多个引号,如上例所示。

谢谢!

2 个答案:

答案 0 :(得分:1)

你可以使用这样的正则表达式:

\[QUOTE=SecondUser.*\[\/QUOTE\]([^[]*)

<强> Working demo

enter image description here

答案 1 :(得分:1)

搜索,但不捕获(在(...)组内)您要排除的所有内容。在这种情况下,\[Quote.*。然后搜索(并捕获)您想要保留的所有内容。它将保存在\1参考:

^\[QUOTE.*\n+|(^.*$)

匹配 [QUOTE...]行,但它捕获该行:唯一保留的行是

Great post, FirstUser
Awful post. I didn't like it.

Example