2014-02-05 50 views
1

我嘗試了很多事情,但我無法讀取標籤上的值。 我在這裏和不同的博客看起來類似的例子,但給出的解決方案沒有解決我的問題。爬行選項標籤與Php

HTML是這樣的網站上:

<div> 
    <select name="ctl00$ContentPlaceHolder1$ddlCityID" id="ddlCityID"> 
    <option value="">Choose</option> 
     <option value="14">Roma</option> 
     <option value="15">Milan</option> 
     <option value="16">Inter</option> 
    </select> 
</div> 

我的PHP代碼:

$pageTitle = 'select[@id="ddlCityID"]'; 
$html = file_get_html($url); 

    if ($html != null) 
    { 
    foreach($html->find($pageTitle) as $element) 
    { 
    $link = $element->find('option'); 
    callfunction($link[0]->option); 
    } 
    } 

錯誤:

Notice: Undefined offset: 0 in C:\Aptana Studio 3 = a.php on line 57 
Notice: Trying to get property of non-object in C:\Aptana Studio 3 = a.php on line 57 

哪裏是我的問題,我如何能獲得價值的標籤和標籤中的文字。

謝謝;

+0

哪一行是57行? –

+0

var_dump'$ link'來查看它是否是一個數組。可能你必須以不同的方式訪問它 –

+0

$ link = $ element-> find('option');是第57行 –

回答

0

繼續使用simplehtmldom而不是str_pos(但我會建議更改解析器,因爲simplehtmldom非常重)。

你正在尋找解決的辦法是這個

include('simple_html_dom.php'); 

$str = '<div> 
    <select name="ctl00$ContentPlaceHolder1$ddlCityID" id="ddlCityID"> 
    <option value="">Choose</option> 
     <option value="14">Roma</option> 
     <option value="15">Milan</option> 
     <option value="16">Inter</option> 
    </select> 
</div>'; 

$pageTitle = 'select[id=ddlCityID]'; 
$html = str_get_html($str); 

if ($html != null) { 
    foreach($html->find($pageTitle) as $element) { 
     foreach($element->find('option') as $trueElement) { 
      echo $trueElement->innertext; 
     } 
    } 
} 

注意的innerText會給你「選擇」,「羅馬」,「米蘭」,「國際米蘭」。 trueElement現在包含每個OPTION標籤。

'id'之前的'@'是無用的。

更新:這是完整的工作代碼我測試。

+0

我試過你的解決方案,它沒有進入第二個,沒有在$元素上找到選項標籤。可能是什麼問題? –

+0

粘貼我一些文字,我無法推斷髮生了什麼(我也發佈之前測試過它,它工作正常)。 – Kei

+0

foreach($ html-> find($ pageTitle)as $ element){ \t \t echo「step1」; foreach($ element-> find('option')as $ trueElement){ \t \t echo「step2」; echo $ trueElement-> innertext; } } 解決方案只是步驟1 –