4

vBulletin の BB コードを標準の HTML マークアップに解析する関数が欲しいです。

PEAR ライブラリや PECL 拡張機能を使用しない理由は、PEAR に煩わされたり、このアプリケーションのすべてのインスタンスにPECL 拡張機能をインストールできることに依存したりしたくないからです。目標はゼロ依存です。PEAR 拡張機能のソース コードを見つけて修正できればいいのですが、できないようです。

具体的には、私が抱えている問題はマッチング[quote=My Name]です。「My Name」という名前は何も囲まれておらず、スペースを含めることができます。

4

5 に答える 5

1

PEARパッケージPECL拡張機能に加えて、非常に使いやすいZend_Markupと呼ばれるZend Frameworkパッケージもあります(ZFは緩く結合されているため、そのコンポーネントのみを使用することを選択できます)。PHPクラスにはかなりの数のクラスもあります。

于 2010-06-02T00:34:07.883 に答える
1

(イントロ: vBulletin で開発して 5 年)

vBulletin のパーサーは、既存のほとんどの正規表現やドロップイン ライブラリに比べてかなり複雑です (もしかすると不必要に?)。私は正直にそれを掘り下げて、あなたができることを取り出したいと思います. パーサーが実際にどのように生成/解析するかを確認する必要なく、完全に機能するパーサーを入手できたら、私は驚かれることでしょう。

古いデータの場合は、自分で書きたいだけかもしれませんが、古いデータと新しいデータが入ってくる場合は、vBulletin 側にキャッシュして、それらが生成したものを使用しないのはなぜですか? または、vB_BbCode_Parser クラスを直接使用するだけです...

お役に立てれば。

于 2010-09-25T20:07:43.133 に答える
1

それを行う 1 つの方法は、http://www.christian-seiler.de/projekte/php/bbcode/index_en.htmlを使用することです。

プロジェクト ページには、同様の取り組みへのリンクも含まれています。そのうちの 1 つは、気に入らなくても役立つ場合があります。

于 2010-06-02T00:46:25.367 に答える
0

PEAR 拡張機能を適用することをお勧めします。他の PEAR ライブラリとの依存関係がないため、かなり簡単です。

于 2010-06-02T01:49:08.913 に答える
0

最も難しい方法の 1 つは、正規表現を使用することです。

$text = "[引用=私の名前]何か。
[b]ブラ[b]
blabla.[/引用]";
$search = "/\[quote=(?>([a-z0-9]*))\](.*)\[/quote\]/is";
$replace = "<i>$1</i> から: <q>$2</q>";
$return_text = preg_replace($search, $replace, $text);

echo nl2br($return_text);

/*
<i>私の名前</i>から: <q>何か。
[b]ブラ[b]
ブラブラ。</q>
*/

特に長いテキストでは、その「(.*)」で壊滅的なバックトラックが発生する可能性があり、一部の一致が亀裂をすり抜ける可能性があるためだけに、最も難しいと言います。そのため、適切な正規表現を見つけるためにソースに直接アクセスすることをお勧めします: http://www.bbcode.org/implementations.php (正規表現については PHP を使用したシンプルで複雑な BBCode、ソースコードについてはphpBBCodeを参照してください)。または、こちらの Pear のパーサー ソースコードを複製してビルドすることもできます: http://svn.php.net/viewvc/pear/packages/HTML_BBCodeParser

于 2010-06-02T03:54:37.053 に答える