回声隐藏的div内容

时间:2014-01-10 14:47:55

标签: php html regex

我正在构建一个小的AJAX脚本,它将获取指定网页的内容,然后显示隐藏的DIV的内容(如果有一个或多个)。

隐藏的DIV有style="display:none;"style="display: none;",所以我想搜索一下。

我该如何执行此任务?我对正则表达式不太满意:(

我试过这个,但到目前为止它没有用:)

$htmldata = file_get_contents($_GET['webaddr']);
$value = preg_match_all('/<div\s*style=\"\s*display:\s*none\s*\">(.*?)<\/div>/s',$htmldata,$estimates);

非常感谢!

2 个答案:

答案 0 :(得分:0)

我会将内容导入为新DOMDocument,然后使用getAttribute方法过滤您的样式。

答案 1 :(得分:0)

您可以使用PHP&gt; = 5.3

<?php

$html = <<<'LOD'
<div style="float:right">glups</div>
<div style="display:none;"><span>glaps</span> <br/></div>
<div style="border-top:1px solid red; display: none; float:right;">glops</div>
<div style="display : none">glips</div>
LOD;

$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

$xpath->registerNamespace("php", "http://php.net/xpath");
$xpath->registerPHPFunctions('preg_match');

$divNodes = $xpath->query('//div[php:functionString("preg_match", "~\bdisplay\s*:\s*none\b~i", @style) = 1]');
foreach ($divNodes as $divNode) {
    $innerHTML = '';
    $children = $divNode->childNodes; 
    foreach ($children as $child) { 
        $innerHTML .= $child->ownerDocument->saveXML($child); 
    }
    echo $innerHTML . "\n"; 
}