0

HTMLをBBCODEに変換するために正規表現を使用しています。しかし、農家のWYSIWYGエディター(TinyMce)からのコードで、問題が発生しています。これは非常に奇妙なケースです。

いくつかの典型的な空白のファラグラフがありますが<p>&nbsp;</p>、私はそれらを決して一致させることができません。次の正規表現はどれも機能していません。

str_replace("<p>&nbsp;</p>",........)
str_replace("<p> </p>".........)
preg_replace("#<p>.?</p>#"....)

これは機能しますが、「スペース」が他の場所にある場合、どうすればそれらを一致させることができますか?

preg_replace("#<p>.{1,6}</p>#"....)

&nbsp;書かれていなくても(元の文字列が格納されているBDでは、&nbsp;書かれておらず、ブロックしかない)、どうすればすべてに一致させることができますか?<p> </p>それはかなり奇妙です...

4

2 に答える 2

4

Unicode Regular ExpressionsWikipedia: Unicode Whitespace characterを読むことをお勧めします。

脚本:

$string = '123<p>  &nbsp;  &nbsp;  </p>abc';
$pattern = '/<p>(&nbsp;|[\s\p{Z}\p{C}\x85\xA0\x{0085}\x{00A0}\x{FFFD}]+)*<\/p>/iu'; 
$replacement = ''; 
echo preg_replace($pattern, $replacement, $string); 

出力:

123abc

注: 任意の 1 つの Unicode 書記素に一致させるには、パターンを使用します\P{M}\p{M}*+

于 2012-06-22T00:41:20.413 に答える