2009-05-22 12 views
4

私は自分のプロジェクトのデフォルトエディタとしてTinyMCE(WYSIWYG)を使用していますが、時には<p>&nbsp;</p> , <p> </p>またはdivを自動的に追加します。空白の不要なHTMLタグを整えるRegexp

私は検索していましたが、正規表現を使って空のタグを整理する良い方法を見つけることができませんでした。私が使用しようとしたコードがある

$pattern = "/<[^\/>]*>([\s]?)*<\/[^>]*>/"; 
$str = preg_replace($pattern, '', $str); 

注:私は、あまりにも:(

答えて

6

代わり /<(\w+)>(\s|&nbsp;)*<\/\1>/ をお試しくださいNBSP &をクリアしたい:)

+0

を? – pix0r

+0

\ 2(または$ 2、私はPHPの構文を忘れています)を使って、タグの間に空白を挿入することができます。 –

1

こと。正規表現はちょっと奇妙ですが、うまくいくかのように見えます。代わりにこれを試すことができます:

$pattern = ':<[^/>]*>\s*</[^>]*>:'; 
$str = preg_replace($pattern, '', $str); 

非常に似ています。

+1

空白を削除するのは良い考えではないかもしれません。おそらく、 "Hello world"を "Helloworld"にしたくないでしょう。 –

0

TinyMCEの数ヶ月後には、これだけでなく、Wordから直接投稿したユーザーの結果に対応して、私はFCKeditorに切り替えて幸せにならなかった。

EDIT:明らかではないが、私が言っていることは、FCKeditorはそれが気に入った場所に任意のパラを挿入するのではなく、私のprevious questionが助けになるかもしれません。

0

あなたは、複数のRegexが1つの一般的な要素で他の必要な要素を削除しないようにしたいでしょう。

ベンはあなたが1つの汎用正規表現で有効な要素をドロップすることが言ったように

<\s*[^>]*>\s*`&nbsp;`\s*<\s*[^>]*> 
<\s*p\s*>\s*<\s*/p\s*> 
<\s*div\s*>\s*<\s*/div\s*> 
+1

複数の正規表現は必要ありませんが、 /<(p|div)>(\ s |  )* <\/\1>/ の代わりに使用できます。 appropiateとしてタグ名を追加します。 –

0

この試してみてください。)(あなたは、その後にpreg_replaceするために、第2引数に空白を代わる

<([\w]+)[^>]*?>(\s|&nbsp;)*<\/\1> 
関連する問題