1

TinyMCEは、Enterキーを2回押すと、空の段落タグを作成します。お気に入り:

<p> </p>

これは <p>SPACE</p>

FireBugでは、このスペースをaと呼びます"&nbsp;"が、html code/DBバックエンドはスペースを表示するだけです。私がそうするとき"str_replace('<p> </p>'....."、それはブロックを見つけません...基本的に、私は「スペース」がどういうわけか標準的なスペースではなく、ある種の中断されたエンコードされたスペースであると思います。このタグを削除するために実行できる正規表現はありますか?私はこれに何時間も立ち往生しています...または

regex('<p>LESS THAN THREE CHARS</p>'...)

おそらくうまくいくだろう

ありがとうございました

4

5 に答える 5

6

私は使うだろう:

$str = preg_replace('~<p>\s*<\/p>~i','',$str);

ここで、\sは任意の種類(タブ、スペースなど)の空白を*示し、これ(スペース)の発生が0回以上であることを示します。したがって、、、<p></p><p> </p>すべて<p>{multiple spaces here}</p>空の文字列に置き換えられます。追加のiフラグは、大文字と小文字を区別しないためのものであり、<p>代わりに<P>'sが'sである可能性があります。

于 2012-07-20T03:00:20.503 に答える
2
$text = preg_replace('#<p>&nbsp;</p>#i','<p></p>', $text);

変数には実際の文字列が含まれており、"&nbsp;"改行しないスペースのUnicode文字は含まれていないため、うまくいきました。したがって、#<p>.</p>#i文字コード表からノーブレークスペース文字をコピーすることも機能しませんでした。

于 2012-09-18T14:30:45.617 に答える
0

<p>タグに。などのインライン属性がある 場合、上記の回答は機能しません<p style="font-weight:bold">

これをキャッチするための正規表現は次のとおりです。

#<p[^>]*>(\s|&nbsp;|</?\s?br\s?/?>)*</?p>#
于 2016-01-01T14:04:43.927 に答える
0

与えられた答えはどれも私にとってはうまくいきませんでしたが、これが何をしたかです:

$str = str_replace('&lt;p&gt;&nbsp;&lt;/p&gt;', '', $str);

間違いなく、物事を行うための最も正しい方法ではありません。ただし、特にSuiteCRM内でTinyMCEを使用している場合は、これが役立つはずです。

于 2017-07-27T14:21:56.847 に答える
-1

これを試して

$string="a bunch of text with <p> </p> in it";

$string=str_replace("/<p> <\/p>/","",$string);

いくつかの点に注意してください。一致する文字列の前後のスラッシュと、2番目の段落タグのスラッシュの前のバックスラッシュのエスケープです。

于 2012-07-20T02:59:09.737 に答える