正则表达式捕获 BBCode 引用用户名和 ID
RegEx capturing BBCode Quote username and ID
我想创建一些正则表达式来从 BBCode QUOTE 标签中捕获用户名和 post ID。
我只希望当用户名直接跟在 post ID 并且是完整格式的 QUOTE 标签(例如 [QUOTE=username;numericalid]
时匹配文本
我目前正在使用这个:
$matches = preg_match_all('/(\[QUOTE=)(\w*?)(\;)/', $data, $match);
但这与下面文本中的 "QUOTE=Jim][QUOTE=Bob" 匹配,而不仅仅是“[QUOTE=Bob”。
我也尝试只 return 用户名和 ID,所以理想的 return 应该是 "Bob;20499344"(对于文本中的每个 username/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 组一起工作以获得您的 "ideal return":
\[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
)
我想创建一些正则表达式来从 BBCode QUOTE 标签中捕获用户名和 post ID。
我只希望当用户名直接跟在 post ID 并且是完整格式的 QUOTE 标签(例如 [QUOTE=username;numericalid]
时匹配文本我目前正在使用这个:
$matches = preg_match_all('/(\[QUOTE=)(\w*?)(\;)/', $data, $match);
但这与下面文本中的 "QUOTE=Jim][QUOTE=Bob" 匹配,而不仅仅是“[QUOTE=Bob”。
我也尝试只 return 用户名和 ID,所以理想的 return 应该是 "Bob;20499344"(对于文本中的每个 username/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 组一起工作以获得您的 "ideal return":
\[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
)