我从一个我正在抓取的网站上有以下内容但不幸的是,内容还包含一些字体标记,并且可能在将来包含其他内联格式。我正在使用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>
答案 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());
}