我正在构建一个小的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);
非常感谢!
答案 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";
}