目前,我使用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)
$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>'
到 "\n* "
... 或其他任何内容 :) $str = "<li>Hello</li> <li>world</li>";
$result = strip_tags($str);
echo $result;
//Expected result after Execution is Hello world
echo strip_tags( str_replace( '>', '> ', $string ));
使用 htmlentities()会更好。
它不会删除 <>,而是将它们进行转义。
这完全取决于您在剥离HTML标签后想要的输出。例如:
如果您希望将<li>
标签转换为普通项目列表,我建议您使用str_replace
将<li>
替换为*
,将</li>
替换为\n
。
strip_tags
的建议是仅删除HTML标签而不进行任何其他转换。