2

我从一个我正在抓取的网站上获得以下内容,但不幸的是,该内容还包含一些字体标签,并且将来可能包含其他内联格式。我正在使用 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>
4

3 回答 3

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>
于 2013-06-13T12:30:17.043 回答
2

假设内容在一个变量中:

$content = strip_tags( $str, '<p><div>' );
于 2013-06-13T12:30:48.937 回答
1

phpQuery 方式可能如下所示:

while($font = $dom->find('font')->eq(0)){
  if(0 === $font->size()) break; // to prevent a strange phpquery bug
  $font->replaceWith($font->text());
}
于 2013-06-14T00:08:33.653 回答