2011-06-26 100 views
0

當使用以下代碼時,出現「提供的參數無效」。我可以成功解析一個IP地址和端口號,但我不知道如何一次獲得多個IP地址和端口號。我的foreach循環不起作用。有任何想法嗎?PHP中的foreach循環獲取提供的無效參數

$dom = new DOMDocument(); 
$dom->loadHTMLFile($url); 
$xml = simplexml_import_dom($dom); 
$dom_results = $xml->xpath("/html/body/div[@id='subpagebgtabs']/div[@id='container']/table[@id='listtable']"); 

$ip_address = $dom_results[0]->tr->td[1]->span; 
$ip_post = $dom_results[0]->tr->td[2]; 

$address_parts = $ip_address.":".$ip_post; 

foreach ($address_parts as $address_full){ 
    echo $address_full . "<br>"; 
} 

$ Dom_Results輸出

["tr"]=> 
    array(50) { 
     [0]=> 
     object(SimpleXMLElement)#5 (3) { 
     ["@attributes"]=> 
     array(2) { 
      ["class"]=> 
      string(0) "" 
      ["rel"]=> 
      string(7) "9054676" 
     } 
     ["comment"]=> 
     object(SimpleXMLElement)#56 (0) { 
     } 
     ["td"]=> 
     array(8) { 
      [0]=> 
      object(SimpleXMLElement)#57 (2) { 
      ["@attributes"]=> 
      array(2) { 
       ["class"]=> 
       string(20) "leftborder timestamp" 
       ["rel"]=> 
       string(10) "1309047901" 
      } 
      ["span"]=> 
      string(10) "2 minutes" 
      } 
      [1]=> 
      object(SimpleXMLElement)#58 (1) { 
      ["span"]=> 
      string(13) "122.72.10.201" 
      } 
      [2]=> 
      string(3) "80" 
+4

'$ address_parts'對我來說看起來不像一個數組。 –

+1

那麼我可以看到$ adress_parts不是數組。 – nullpotent

+1

你知道$ address_parts應該是一個數組嗎? – leon

回答

0

我認爲這是你在找什麼:

// If results are found 
if (! empty($dom_results)) 
    // Loop through each result. Based on your XPath query, the $dom_results 
    // contains tables. This loops through the rows of the first table. 
    foreach ($dom_results[0]->tr as $row) 
    { 
    $ip_address = $row->td[1]->span; 
    $ip_post = $row->td[2]; 

    // Output the address 
    echo $ip_address . ":" . $ip_post . "<br />"; 
    } 
+0

我認爲這是我需要的,但它只返回頁面上的IP地址1。有沒有辦法讓它一次全部返回? – sarsar

+0

@sarsar - 我更新了答案,以循環遍歷每個表格行(TR)而不是每個表格。這可能會解決問題。數據如何存儲在你想分析的表格中並不是很清楚(現在還不是)。 –

+0

完美!非常感謝。 – sarsar

0

似乎要提取所有的IP地址和端口號並連接它就像

ipaddress:端口

所以試試這個

foreach($dom_results as $dom) { 
    $ip = $dom->tr->td[1]->span; 
    $port = $dom->tr->td[2]; 
    $address = $ip . ":". $port; 
    echo $address . "<br />"; 
} 
相關問題