2017-09-28 11 views
0

도움을 주시면 감사하겠습니다.DOMXpath query()가 예상 문맥 불러 오기를 제공하지 않습니다.

문맥에서 DOMXpath가 필요한 DOMNode를 가져 오지 못하게 할 수 있습니다. 각 for 반복 $a에서 어떻게 든
(4를해야하며, 길이) 전체 DOM 대신 의 예상 아이들의 모두에서 하나의$childNode에서 모든<a> 것 같다 무엇을 DOMNodeList (길이 = 31)입니다 .

이럴 : 그것은 상황에 맞는 느낌이 경우이는 reqiured로의 동작을 변경하는 것이 가능하다 ... foreach에 따라 변화하는 것이 아니라 HTML의 루트에 남아있는 나에게?

P. Vuola!, 변경된 Xpath 쿼리 $a = $xpath->query('.') 및 수신 DOMElement->tagName="html".
따라서 my previous question on DOMXpath DOMNodeList 외에도 DOMDocument가 DOMXpath에 대해 지옥을 제공하지 않는 것 같습니다. theese 둘 사이의 연결 없음, 사용할 수없는 상황에 맞는 사용 ...

답변 : 시큰둥, 그것은 장님 idiot..have가

$dom = new DOMDocument(); 
$dom -> loadHTML('HTML data'); 
$xpath = new DOMXpath($dom); 

$myDivs = $xpath -> query('//div[@price]'); 

for($i=0; $i <= $myDivs->length-1; $i++) { 

    $childNodes = $myDivs->item($i)->childNodes; 

    foreach($childNodes as $childNode){ 
    $a=$xpath->query('.//a[@data-image-src]'); 

    if($a){ 
     usleep(1); 
    } 

}     

답변

0

당신은 필요 2 DOMXpath의 매개 변수 : 쿼리()를 놓친 그냥 날 것입니다 DOMXPath::query() 메소드의 두 번째 인수로 컨텍스트 노드을 제공하십시오. 특정 경우

, 즉 다음과 같습니다

$a = $xpath->query('.//a[@data-image-src]', $childNode); 
+0

그는 그가, 감사합니다. 내 자신을 발견했습니다 :) –

+0

그건 대단해! 미래에, 여기서 질문을하고 답을 찾아내는 경우 돌아와 대답을 작성하는 것이 좋습니다. 이렇게하면 같은 질문을 가진 사람을 도울 수 있습니다. :) – salathe