これは投稿を引用するための私の bbcode です (12345 は元の投稿の ID です):
[quote=12345] ... citation ... [/quote]
次のように引用を表示したいと思います。
<blockquote>
<a href="">Username</a> at 2012-09-12 11:00 a.m. (<a href="">original</a>):
... citation ...
</blockquote>
アイデア(疑似コード):
$bbcode_content = "[quote=12345] ... citation ... [/quote]";
// 1. get the $post_id
$post_id = replace('/\[quote\=(.*?)\]/is','$1', $bbcode_content);
// 2. select the post data from databse
$post_obj = $DB->select("SELECT `author`, `timestamp` FROM `posts` WHERE id=".$post_id);
// 3. build an extended bbcode tag
$bbcode_content = "[quote post_id={$post_id} timestamp={$post_obj->timestamp} author={$post_obj->author}]";
// 4. bbcode to html
$html = replace("[quote post_id=(*) timestamp=(*) author=(*)]", '<blockquote><a href="">$1</a> at '.date("Y-m-d h:i", $2).' (<a href="forum/post/$3">original</a>)', $bbcode_content);
$html = replace("[/quote]", "</blockquote>", $html);
問題:
- このようなものを再帰的に置き換える方法は? 多分preg_replace_callbackで?
- 4 番目のポイント「bbcode to html」の正規表現は何ですか?
私は少し混乱しています。この問題をどのように解決しますか?
前もって感謝します!