4

現在、strip_tagsを使用して、処理する文字列からすべてのhtmlタグを削除しています。しかし、最近、削除されたタグに含まれている単語を結合していることに気付きました。

$str = "<li>Hello</li><li>world</li>";
$result = strip_tags($str);
echo $result;
(prints HelloWorld)

どうすればこれを回避できますか?

4

6 に答える 6

2

これにより、すべての html タグ (< ABC > の形式のすべて、実際にはそれが本当に html であるかどうかのチェックなし) が空白に置き換えられ、可能性のある二重の空白が単一の空白に置き換えられ、先頭または末尾の空白が削除されます。

$str = preg_replace("/<.*?>/", " ", $str);
$str = trim(str_replace("  ", " ", $str));
于 2011-12-11T17:24:59.960 に答える
2

どの正規表現パターンが最適で、何を置き換えるかを試すことができます:)

// ------------------------------------ 

function strip_html_tags($string) { 

    $string = str_replace("\r", ' ', $string); 
    $string = str_replace("\n", ' ', $string); 
    $string = str_replace("\t", ' ', $string); 
##  $string = str_replace("<li>', "\n* ", $string); 

##  $pattern = "/<.*?>/"; 
    $pattern = '/<[^>]*>/'; 

    $string= preg_replace ($pattern, ' ', $string); 

    $string= trim(preg_replace('/ {2,}/', ' ', $string));

return $string; 

}

// ------------------------------------ 

次のような特別な置換を追加することもできます: '<li>'to "\n* "... または何でも:)

于 2013-05-09T10:12:56.193 に答える
1

それはすべて、HTML タグを削除した後に必要な出力によって異なります。例えば:

<li>タグをアイテムの単純なリストに変換したい場合は、 withとwithstr_replaceを置き換えることをお勧めします。<li>*</li>\n

strip_tagsの提案は、他の変換を行わずに HTML タグを取り除くことです。

于 2011-12-11T17:16:51.190 に答える
1

htmlentities()を使用したほうがよいでしょう

<> は削除されませんが、エスケープされます。

于 2011-12-11T17:02:36.277 に答える
1
echo strip_tags( str_replace( '>', '> ', $string ));

それは、すべての場合で探していることを正確に行う必要があります。

于 2013-08-23T09:25:42.133 に答える