PHP如何找到字符串后匹配/通配符/匹配
问题描述:
说我有以下字符串,$ mytext的内容:PHP如何找到字符串后匹配/通配符/匹配
[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 = $的用户名和之间[/ quote]的下一个实例
这必须支持在$ mytext中出现多个引号,就像上面的例子。
谢谢!
答
的搜索,但不捕获((...)
组内),要排除一切。在这种情况下,\[Quote.*
。然后搜索(并捕获)您想要保留的所有内容。它将被保存在\1
参考:
^\[QUOTE.*\n+|(^.*$)
它将比赛的[QUOTE...]
线,但它并没有捕获该行:即保持唯一的线
Great post, FirstUser
Awful post. I didn't like it.
谢谢!这似乎并没有与preg_match一起工作: 'preg_match('\ [QUOTE = SecondUser。* \ n] [/ QUOTE] [$ QUOTE = SecondUserRANDOMNUMBER]第二个用户的帖子[/ QUOTE] [\/QUOTE \]([^ [] *)',$ mytext,$ matches);' 'echo $ matches [0];'不返回任何东西。 – 2014-08-27 21:46:22
@PFBilling它适用于regex101 http://regex101.com/r/yS1cR0/2。顺便说一句,你可以检查代码生成器部分复制内容。 – 2014-08-27 21:50:17
这必须是我的PHP代码的问题。非常感谢正则表达式 - 标记为Accepted,因为正则表达式正是我们所需要的。 – 2014-08-27 21:51:48