0

テキストフィールドは、の組み合わせでパディングできます

<p></p> 
<p>&nbsp;</p>
<br>
<span></span>
<div></div>

およびスペースを含む他のいくつかのバリエーション  

これを削除したいのは、ウェブ上のフォーマットを台無しにするからです。

末尾の , と " " を削除
し、最後の終了タグを見つけ、一致する開始タグを見つけ、内容をそれ自体にフィードする再帰関数を考えています。返されたコンテンツが空の場合は、タグを削除します。

mssqlserver 2008、vbscript (クラシック ASP)、または php でストアド プロシージャとして実行できます。

4

2 に答える 2

0

最も簡単な答えはこれであり、複雑な正規表現は必要ありません:

$html = str_replace('<span></span>', '' ,$html);
$html = str_replace('<p></p>', '' ,$html);
$html = str_replace('<div></div>', '' ,$html);

$html をすべての出力の文字列に置き換えます。

シンプル!

于 2013-07-09T16:33:36.927 に答える
0

これは正規表現で行うことができます。この状況では、DOM は最も簡単な方法ではないと思います。PHP の例:

$pattern = '~(?><(p|span|div)\b[^>]*+>(?>\s++|&nbsp;)*</\1>|<br/?+>|&nbsp;|\s++)+$~i';
$result = preg_replace($pattern, '', $text);

説明:

~
 (?>                          # open an atomic group
     <(p|span|div)\b[^>]*+>   # opening tags, note that this subpattern allows
                              # attributes with [^>]*+ you can remove it if you
                              # don't need it
           (?>\s++|&nbsp;)*   # content allowed inside the tags *

     </\1>                    # closing tag (refer to the first capturing group)
   |                          # OR
     <br/?+>                  # stand alone tag <br>
   |                          # OR
     &nbsp;                   # &nbsp;
   |                          # OR
     \s++                     # white characters
  )+$
~i

(*) このパターンは、次のようなネストされたタグを処理しないことに注意してください。<div><p></p><\div>ただし、再帰パターンで問題を解決することは可能です。

$pattern = '~(<(p|span|div)\b[^>]*+>(?1)*</\2>|<br/?+>|&nbsp;|\s++)+$~i';

ここで(?1)は、最初のキャプチャ グループを参照します。

于 2013-07-09T16:19:15.437 に答える