2009-04-21 12 views

答えて

15
$result = preg_replace('#<p[^>]*>(\s|&nbsp;?)*</p>#', '', $input);

これは出力にリテラルNBSP文字をキャッチしていませんが、それは見て非常にまれです。

あなたはHTMLを扱っているので、これがユーザー入力の場合、XSSの脆弱性にも対応するHTML Purifierを使用することをお勧めします。空のpタグを削除する設定は、%AutoFormat.RemoveEmptyです。

5

この正規表現は、あなたの例に対して動作します:

<p[^>]*>(?:\s+|(?:&nbsp;)+|(?:<br\s*/?>)+)*</p>
1

元のreplierが述べたように、正規表現はここでは最適な解決策ではありません。あなたが望むのはhtmlストリッパーです。このサイト上の

機能: http://nadeausoftware.com/articles/2007/09/php_tip_how_strip_html_tags_web_page

はあなたを助けるべきは、あなただけではないバックしたい形式に新しい行と何を得るために、文字列操作のビットを使用する必要があります。