如何从某些HTML中删除所有格式

时间:2013-06-13 12:26:17

标签: php phpquery

我从一个我正在抓取的网站上有以下内容但不幸的是,内容还包含一些字体标记,并且可能在将来包含其他内联格式。我正在使用PHPQuery来实现这一点,但只有PHP的解决方案才有效。

<p>
<font
color="#cc0000">
    <font
    color="#000000">Content</font>
        </font>
</p>
<p>Content</p>
<p>
    <font
    color="#cc0000">Content I wish to keep but font should be removed</font>
</p>
<p>
    <font
    color="#cc0000">Content I wish to keep but font should be removed</font>
</p>
<p>
    <font
    color="#cc0000">Content I wish to keep but font should be removed</font>
</p>
<p>
    <font
    color="#cc0000">Content I wish to keep but font should be removed</font>
</p>
<p>
    <font
    color="#000000">Content I wish to keep but font should be removed</font>
</p>
<p>Content</p>
</div>

3 个答案:

答案 0 :(得分:4)

使用strip_tags();

strip_tags ($str, '<p><div>');

此行将删除所有标记但P和DIV您可以向第二个参数添加更多可附加标记。

来自php.net的例子

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

 // Allow <p> and <a>
 echo strip_tags($text, '<p><a>');
 ?>

以上示例将输出:

Test paragraph. Other text
<p>Test paragraph.</p> <a href="#fragment">Other text</a>

答案 1 :(得分:2)

假设内容在变量中:

$content = strip_tags( $str, '<p><div>' );

答案 2 :(得分:1)

phpQuery方式可能如下所示:

while($font = $dom->find('font')->eq(0)){
  if(0 === $font->size()) break; // to prevent a strange phpquery bug
  $font->replaceWith($font->text());
}