删除html标签

时间:2011-12-11 17:00:35

标签: php strip-tags

目前,我使用strip_tags从我处理的字符串中删除所有html标记。但是,我最近注意到它加入了包含在标签中的单词 即

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

你怎么能绕过这个?

7 个答案:

答案 0 :(得分:3)

找到以下问题,这基本上解决了我的问题 Problem using strip_tags in php

感谢您的帮助

答案 1 :(得分:2)

这完全取决于剥离HTML标记后您想要的输出。例如:

如果您希望在明确的项目列表中转换<li>代码,建议您使用str_replace<li>替换为*和{{ 1}}与</li>

\n的建议是在没有任何其他转换的情况下删除HTML标记。

答案 2 :(得分:2)

这将替换所有html标签(实际上是&lt; ABC&gt;形式的任何东西,不检查它是否真的是html),带有空格,然后将可能的双空格替换为单个空格并删除开始或结束的空格

$str = preg_replace("/<.*?>/", " ", $str);
$str = trim(str_replace("  ", " ", $str));

答案 3 :(得分:2)

你可以玩哪个Regex模式最好,替换什么:)

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

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* " ...或者其他:)

答案 4 :(得分:1)

htmlentities()

会更好

它不会删除&lt;&gt;,而是将它们转义。

答案 5 :(得分:1)

echo strip_tags( str_replace( '>', '> ', $string ));

在所有情况下都应该完全符合您的要求。

答案 6 :(得分:1)

从你的代码中我发现Hello Word之间没有初始空格,你不希望strip_tags函数为你添加它,所以为了strip_tags函数准确地产生你想要的东西,我添加了一个第一个列表标记后面的空格,结果是Hello world。

您可以复制并粘贴此代码并运行以查看差异。

    $str = "<li>Hello</li> <li>world</li>";
    $result = strip_tags($str);
    echo $result;
    //Expected result after Execution  is Hello world