从字符串中删除所有html标记的最佳方法是什么?

时间:2009-08-10 17:30:24

标签: php html string

使用PHP,给出如下字符串:this is a <strong>string</strong>;我需要一个函数来去除所有html标记,以便输出为:this is a string。有任何想法吗?提前谢谢。

4 个答案:

答案 0 :(得分:11)

PHP具有内置函数,可以完全按照您的要求执行:strip_tags

$text = '<b>Hello</b> World';
print strip_tags($text); // outputs Hello World

如果您希望破坏HTML,则需要将其加载到DOM解析器中,然后提取文本。

答案 1 :(得分:5)

使用strip_tags怎么样才能做到这一点?

例如(引用文档)

<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";

会给你:

Test paragraph. Other text

编辑:但请注意,strip_tags不会验证您提供的内容。这意味着这段代码:

$text = "this is <10 a test";
var_dump(strip_tags($text));

会得到你:

string 'this is ' (length=8)

(看起来像起始标签之后的所有东西都被删除了。)

答案 2 :(得分:1)

strip_tags是您追求的功能。你会使用类似这样的东西

$text = '<strong>Strong</strong>';
$text = strip_tags($text);
// Now $text = 'Strong'

答案 3 :(得分:0)

我发现这比单独strip_tags()更有效,因为strip_tags()不会消除javascript或css:

$search = array(
    "'<head[^>]*?>.*?</head>'si",
    "'<script[^>]*?>.*?</script>'si",
    "'<style[^>]*?>.*?</style>'si",
);
$replace = array("","",""); 
$text = strip_tags(preg_replace($search, $replace, $html));