如何从vBulletin解析引用的帖子?

时间:2012-09-14 00:17:31

标签: php regex preg-replace vbulletin quote

使用PHP,我该如何转换:

[QUOTE=Username;1234]This is the text being quoted[/QUOTE]

分为:

<div class="quote"><a href="./linktopost?id=1234>Posted by: Username</a><p>This is the text being quoted.</p></div>

请注意用户名 1234 ID和这是引用的文字文本的映射位置。

我知道如何开始和结束,只需替换(例如str_replace)任何实例:

[QUOTE= >>> <div class="quote">< href="./linktopost.php?id=

[/QUOTE] >>> </p><div>

但我不知道如何提取用户名帖子ID 以及引用的文字以便我可以绑定它们一起来。

如果有帮助,从上面的内容可以看出,可以在分隔符[QUOTE=;之间提取用户名,可以在;和{{1}之间提取帖子ID可以在]]之间提取文本,但我不知道如何提取它们。

此外,如果报价中有报价,会发生什么?解决方案也应该适用于那些情况。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这可能会有所帮助;)

$str = "[QUOTE=Username;1234]This is the text being quoted[/QUOTE]";

if(preg_match('/\[QUOTE=([^;]+);([0-9]+)\]([^\[]+)\[\/QUOTE\]/i', $str, $matches)){
    echo "<br>USERNAME : ".$matches[1];
    echo "<br>POST ID : ".$matches[2];
    echo "<br>MESSAGE : ".$matches[3];
}