PHP simplehtmldom只读可视文本

时间:2014-12-22 10:26:37

标签: php screen-scraping simple-html-dom

我有以下html格式

 <p>This is viewable <span style="display:none">This is not viewable</span></p>

我想使用php simplehtmldom只提取&#34;这是可见的&#34;一部分。

有没有直接这样做?

2 个答案:

答案 0 :(得分:0)

不,SimpleHTMLDOM只是一个DOM解析器,它不以任何有意义的方式处理属性,更不用说处理内联样式了。要正确地执行您想要实现的目标,还需要能够处理扩展的内联样式,例如style="anyother:'attribute';display:none"和隐藏内容的替代方式,例如visibility:hiddenopacity:0,或者辉煌像-webkit-transform:rotateY(90deg)这样的东西。

简而言之,没有一种简单的方法可以达到预期的效果。

答案 1 :(得分:0)

当然可以,只需删除该文字:

$str = '<p>This is viewable <span style="display:none">This is not viewable</span></p>';

$html = str_get_html($str);

foreach($html->find('[style*=display:none]') as $el){
  $el->innertext = '';
}

echo $html->find('p', 0)->text();
// This is viewable