PHP を使用して、phpBB3 フォーラムからの BBCode の引用を置き換える必要があります。引用された投稿は次のようになります。
[quote="John Doe":2sxn61wz][quote="Bob":2sxn61wz]Some text from Bob[/quote:2sxn61wz]Some text from John Doe[/quote:2sxn61wz]Some more text
この文字列を解析して、最終的に次のような配列にしたいと思います。
Array (
[0] => Array (
[0] => 'John Doe'
[1] => 'Some text from John Doe'
)
[1] => Array (
[0] => 'Bob'
[1] => 'Some text from Bob'
)
)
これらの引用ブロックとその内容を再帰的に見つけるための最良の方法は何でしょうか? それについて何か助けてくれてありがとう!
コメントで提案されているように:
$str = '[quote="John Doe":2sxn61wz][quote="Bob":2sxn61wz]Some text from Bob[/quote:2sxn61wz]Some text from John Doe[/quote:2sxn61wz]Some more text';
$uid = '2sxn61wz';
print_r(quoteParser($str, $uid));
function quoteParser($str, $uid) {
$pattern = "#\[quote(?:="(.*?)")?:$uid\]((?!\[quote(?:=".*?")?:$uid\]).)?#ise";
echo "Unparsed string: " . $str . "<br /><br />";
echo "Pattern: " . $pattern . "<br /><br />";
preg_match_all($pattern, $str, $matches);
return $matches;
}
出力:
Array ( [0] => Array ( [0] => [quote="John Doe":2sxn61wz] [1] => [quote="Bob":2sxn61wz]S ) [1] => Array ( [0] => John Doe [1] => Bob ) [2] => Array ( [0] => [1] => S ) )
それは私が必要としているものですが、引用されたテキストを取得できません。ユーザー名のみ。何か助けはありますか?これまでありがとう。