2010-12-27 4 views
0

を持っている段落を削除したい私は(それは一貫している)、私は文字列から特定のクラスを持っている段落を削除する必要がありますしてください私は、これは多くの組み合わせをカウントしないだろうと思い、特定のクラス(PHP /正規表現)

例:私はspecial_classのみを持っているすべての段落の内容を削除したい

<p class="special_class">Some content</p> 

。だから私は空を返す正規表現を実行したいと思います。これを行うためにパーサーを使用したくありません。私はスクリプト内でこれを使用しています。

ありがとうございました:)

答えて

2

をHTMLの解析のための正規表現を使用することが一般的に悪い考えです。代わりにSimple HTML DOM Parserを見て、指定したものを見つけ出して削除してください。

とにかく、正規表現を使用したい場合は、代わりにこれをTRTできます

preg_replace('/<p class="special_class">[\w\s]*<\/p>/', '<p class="special_class"></p>'); 
+0

文書の残りの部分のHTML構造が変更されますか? – Kobi

+0

+1ザルゴ無し – eyelidlessness

+0

この関数は約4行であり、これにパーサを使うのは残念です。私は正規表現でそれが必要と私はそれが悪い考えであることを知っている。おかげで、働いた –

1
$result = preg_replace('%<p\s+class="special_class">.*?</p>%s', '', $subject); 

は動作するはずです。オープニングから段落全体を閉じるタグpまで削除します。 pタグが正しく閉じられていると予想されます。しかし、あなたはすでに正規表現を使ってHTMLを扱うことの欠点について知っているようです...

関連する問題