2013-03-11 35 views
1

當前PHP:如何使用DOMXPath查詢來獲取區域形狀

$dom = new DOMDocument(); 
    $dom->loadHTML($htmlsrc); 

    $xpath = new DOMXPath($dom); 

    $tags = $xpath->query('//div/map/area'); 
    foreach ($tags as $tag) { 
     var_dump(trim($tag->nodeValue)); 
    } 

這顯然是不正確的。我有一個持有其中有少數(約8萬),這些文件的的file_get_contents變量:

<area shape="poly" alt="" coords="500,327,464,349,467,385,478,400,492,394,500,356" href="1880314600" title="" /> 

我試圖收集$ COORDS和$ HREF這樣我就可以把這些數據庫中,而不是一個文件,但我只是無法捕捉如何使用xpath。對不起,我沒有正確的答案,「你有什麼嘗試?」我嘗試了很多東西,我簡直無法理解這個(或者正則表達式)。

編輯 的意見:

$xpath = new DOMXPath($dom); 
    var_dump($xpath); 
    $tags = $xpath->query('//div/map/area'); 
    foreach ($tags as $tag) { 
     var_dump($tag->getAttribute('coords')); 
    } 

第一的var_dump()所示:(編輯,因爲有噸人)

object(DOMXPath)#2985 (1) { ["document"]=> string(22) "(object value omitted)" } string(47) "500,327,464,349,467,385,478,400,492,394,500,356" string(47) "559,310,530,314,532,394,543,389,561,367,561,351" string(63) "613,369,586,343,575,343,575,369,584,394,618,402,638,398,629,371" string(47) "523,431,501,438,498,451,537,468,550,464,550,447" string(39) "525,464,510,460,507,466,518,471,523,469" 

然而第二的var_dump不返回任何東西。爲什麼第一個xpath轉儲只顯示coords?進一步,我也不puting在這一點上查詢...

+3

'的var_dump($標籤 - >的getAttribute( 'COORDS'));'? – PeeHaa 2013-03-11 15:49:07

+0

我必須做錯了什麼,我沒有從var_dump得到任何結果,甚至不是NULL。在我繼續這個之前,讓我確定我沒有先做一些愚蠢的事情。 – 2013-03-11 16:00:51

+0

做一個'var_dump($ htmlsrc)'來確保你得到了你期望的輸入,然後確保DOM實際上能夠加載/解析這個html - 它非常** **對錯誤html的挑剔。 – 2013-03-11 16:03:42

回答

1

爲了獲取座標(或任何其他屬性爲此事)你can simply do

var_dump($tag->getAttribute('coords')); 

如果你也想獲得href屬性,你可以簡單地做:

var_dump([ 
    'coords' => $tag->getAttribute('coords'), 
    'href' => $tag->getAttribute('href'), 
]);