2016-04-08 12 views
1

にタグとその内容を交換し、私はこのコードですべての書式を削除するために管理:見つけ、私はBBコード含む文字列を持っているPHP

$plain_text = strip_tags(str_replace(array('[',']'), array('<','>'), $message)); 

しかし、私は削除するコードの一枚を持っていますその内容 このコード:

[ATTACH=full]4281[/ATTACH] 

番号「4281」は常に異なるものになりますので、どのように私はそれを削除することができますか?

私が試した:

preg_replace("/[ATTACH=full](.*)[\/ATTACH]/eis", '', $message); 

しかし、それは動作しませんが。私はそれが "添付=完全な"部分と等号と関係があると思います。

アイデア?ありがとう。

+0

正規表現でHTMLを解析しないでください。代わりに[PHP DOMパーサ](http://simplehtmldom.sourceforge.net/)を使用してください。 –

+0

等号には特別な意味はありません。大括弧で囲まれています(文字クラス)ので、それらをエスケープする必要があります。そして、 'e'修飾子を削除してください - それは廃止されていないことと警告を生成すること以外は、とにかくここでは有用な目的はありません。 – CBroe

+0

@JayBlanchard、それは常にあなたが達成したいと思っているかどうかにかかっています。パフォーマンスの場合、誰も正規表現を打つことはできません – kirugan

答えて

0

この正規表現は動作するはずです:Cbroeが言ったように

preg_replace("/\[ATTACH=full\].*\[\/ATTACH\]/", '', $message); 

は、あなたが '[' と ']' 文字をスケープする必要がありました。

UPDATE:正規表現の先頭と末尾にスラッシュ「/」を追加しました。

+0

あなたは正しいですが、私はこれらの文字をエスケープしましたが、私はこのエラーを受け取ります:preg_replace():デリミタは英数字またはバックスラッシュであってはなりません – Ironank

+0

こんにちは@Ironank、私は必要に応じてスラッシュ '/' 'デリミタ'の問題を解決する。私は簡単なPHPスクリプトでテストしました。あなたのために働くことを願っています。 – Arcangel2p

+0

ありがとう、ちょうど疲れて、それ以上のエラーはありません。しかし何らかの理由で、タグ内の内容を削除していません。私も試してみました。何か案は? – Ironank

関連する問題