正则表达式捕获BBCode Quote用户名和ID



我希望创建一些正则表达式,它将从BBCode QUOTE标签捕获用户名和帖子ID。

我只希望当用户名后面紧跟帖子 ID 并且是完全格式的 QUOTE 标签(例如 [QUOTE=用户名;数字 ID] 时,文本才会匹配

我目前正在使用这个:

$matches = preg_match_all('/([QUOTE=)(w*?)(;)/', $data, $match);

但这与下面文本中的"QUOTE=Jim][QUOTE=Bob"相匹配,而不仅仅是"[QUOTE=Bob"。

我也尝试只返回用户名和ID,所以理想的回报是"Bob;20499344"(对于文本中的每个用户名/ID模式(。

[QUOTE=Bob;204992][QUOTE=Steve;204939][QUOTE=Steve;204938][QUOTE=Steve;204936]Here is some text.
[QUOTE=Jim][QUOTE=Bob;20499344][QUOTE=Bob;203489194][QUOTE=Bob;67235994]some more quote here[/QUOTE][/QUOTE][/QUOTE][/QUOTE][/QUOTE][QUOTE=Bob;204194]
=hello;78967876]

如何修改正则表达式以正确匹配?

任何帮助都会很棒!谢谢!

您可以使用

以下正则表达式,然后使用组 #1 来获得"理想回报":

[QUOTE=([w ]+;d+)

[w ]+查找用户名(由单词字符和空格组成;您可能需要将其更改为实际限制(,d+查找至少一个数字。

小示例代码:

<?php
$string = "[QUOTE=jim][QUOTE=bob;20499344][QUOTE=bob;203449194][QUOTE=bob;67204994]some more quote here[/QUOTE][/QUOTE][/QUOTE][/QUOTE][/QUOTE][QUOTE=bob;204994]";
$matches = preg_match_all('/[QUOTE=([w ]+;d+)/', $string, $match);
print_r($match[1]);
?>

输出:

Array
(
    [0] => bob;20499344
    [1] => bob;203449194
    [2] => bob;67204994
    [3] => bob;204994
)

最新更新