現在、strip_tagsを使用して、処理する文字列からすべてのhtmlタグを削除しています。しかし、最近、削除されたタグに含まれている単語を結合していることに気付きました。
$str = "<li>Hello</li><li>world</li>";
$result = strip_tags($str);
echo $result;
(prints HelloWorld)
どうすればこれを回避できますか?
現在、strip_tagsを使用して、処理する文字列からすべてのhtmlタグを削除しています。しかし、最近、削除されたタグに含まれている単語を結合していることに気付きました。
$str = "<li>Hello</li><li>world</li>";
$result = strip_tags($str);
echo $result;
(prints HelloWorld)
どうすればこれを回避できますか?
これにより、すべての html タグ (< ABC > の形式のすべて、実際にはそれが本当に html であるかどうかのチェックなし) が空白に置き換えられ、可能性のある二重の空白が単一の空白に置き換えられ、先頭または末尾の空白が削除されます。
$str = preg_replace("/<.*?>/", " ", $str);
$str = trim(str_replace(" ", " ", $str));
どの正規表現パターンが最適で、何を置き換えるかを試すことができます:)
// ------------------------------------
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* "
... または何でも:)
それはすべて、HTML タグを削除した後に必要な出力によって異なります。例えば:
<li>
タグをアイテムの単純なリストに変換したい場合は、 withとwithstr_replace
を置き換えることをお勧めします。<li>
*
</li>
\n
strip_tags
の提案は、他の変換を行わずに HTML タグを取り除くことです。
htmlentities()を使用したほうがよいでしょう
<> は削除されませんが、エスケープされます。
echo strip_tags( str_replace( '>', '> ', $string ));
それは、すべての場合で探していることを正確に行う必要があります。