2014-01-10 6 views
1

하나 이상의 AJAX 스크립트가 있으면 특정 웹 페이지의 내용을 가져온 다음 숨겨진 DIV의 내용을 표시합니다.에코 숨겨진 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

정의하십시오 "작동하지 않습니다"PHP 이것을 사용할 수 있습니다. – Goikiu

+0

항상 'style = "display : none;"'이 있고 외부 CSS를 통해 숨겨져 있지 않습니까? – putvande

+0

'; '를 잊어 버렸습니다 –

답변

0

당신은> = 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"; 
}