質問

書いが、リクエストに変換BBcodeめます。

私はこれを変換しBBcode:

[quote]
Hello World
[/quote]

以下の

<blockquote>Hello World</blockquote>

のpreg_replace機能を使用していることです:

preg_replace("/\[quote\](.+?)\[\/quote\]/s", "<blockquote>\\1</blockquote>", $bbCode);

このほとんどはお世話になりたいと思いまするためにも必要となり、私の問題であることを通りから前後の'Hello World',生:

<blockquote>
Hello World
</blockquote>

そのアイデアやかに修理が可能です。すべて助けてもよろしくお願いいたします。

役に立ちましたか?

解決

この正規表現を試してみてください

/\[quote\]\s*(.+?)\s*\[\/quote\]/s

他のヒント

あなたは二重引用符の内側にバックスラッシュをエスケープする必要があります。 "\ [" の代わりに、 "[\\" が必要です。

可能にする使用e' regex-正規表現の修飾, は、電話、インスタンスは、 trim 関数の文字列になります。

引用するページのマニュアル:

e (PREG_REPLACE_EVAL)
この修飾子を設定 preg_replace() が通常の置換 backreferencesの交換 文字列評価でPHPコード の結果の交換 検索文字列になります。シングルクォーテーション、ダブル 見積書、バックスラッシュ(\NULL 文字数が逃げによりバックスラッシュ に置換されbackreferences.

のみ preg_replace() この 修飾子;では無視されるその他のPCRE ます。


例えば、このコードをわずかに自分とは異なる:

$bbCode = <<<STR
[quote]
Hello World
[/quote]
STR;

$output = preg_replace("/\[quote\](.+?)\[\/quote\]/es", "'<blockquote>' . trim('\\1') . '</blockquote>'", $bbCode);
var_dump($output);

てください:

string '<blockquote>Hello World</blockquote>' (length=36)

ie、 trim 関数が呼び出されるまで、いったい--る場合がございますのでご了承を削除しますすべての白色空間での最初と最後の文字列;な改行も空間集計.

(例えば、できるか例#4の マニュアルページ preg_replace)
(でんとにビットを失わせないアイテムこの場合、私は追加もしているのは嬉しいかも)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top