2014-03-27 49 views
0

我目前使用PHP的file_get_contents($url)從URL獲取內容。獲取內容後,我需要檢查給定的HTML塊,找到具有給定名稱屬性的'select',提取它的選項以及它們的值文本。我不知道如何去這一點,我可以使用PHP的simplehtmldom類來解析HTML,但我如何得到一個特定的「選擇」與名「聯盟」PHP:如何在html中找到具有特定名稱屬性的元素(來自url)

<span class="d3-box"> 
    <select name='union' class="blockInput" > 
    <option value="">Select a option</option> .. 

頁可以有多個「選擇'盒,因此我需要專門看名稱屬性

<?php 
    include_once("simple_html_dom.php"); 
    $htmlContent = file_get_contents($url); 
    foreach($htmlContent->find(byname['union']) as $element) 
    echo 'option : value'; 
?> 

任何形式的幫助表示讚賞。先謝謝你。

+0

php dom,xpath。 – zerkms

回答

4

試試這個PHP代碼:

<?php 

require_once dirname(__FILE__) . "/simple_html_dom.php"; 

$url = "Your link here"; 

$htmlContent = str_get_html(file_get_contents($url)); 
foreach ($htmlContent->find("select[name='union'] option") as $element) { 
    $option = $element->plaintext; 
    $value = $element->getAttribute("value"); 
    echo $option . ":" . $value . "<br>"; 
} 

?> 
+0

完美!我最終做出了一個curl請求,而不僅僅是file_get_contents,但其餘的都很精美。謝謝。 – user988544

1

從DOM文檔文件:http://www.php.net/manual/en/class.domdocument.php

$html = file_get_contents($url); 
$dom = new DOMDocument(); 
$dom->loadHTML($html); 

$selects = $dom->getElementsByTagName('select'); 
$select = $selects->item(0); 

// Assuming all children are options. 
$children = $select->childNodes; 

$options_values = array(); 
for ($i = 0; $i < $children->length; $i++) 
{ 
    $item = $children->item($i); 
    $options_values[] = $item->nodeValue; 
} 
+0

這不會讓我成爲該頁面上的第一個「選擇」框嗎?由於該頁面可以有多個「選擇」框,因此我需要專門查看其名稱屬性,而不是標籤。 – user988544

+0

這只是一個示例代碼,我已經鏈接了您可以根據需要修復它的手冊:)您擁有屬性(nodeName)的名稱和所需的所有工具。 – milo5b

2

這個怎麼樣:

$htmlContent = file_get_html('your url'); 
$htmlContent->find('select[name= "union"]'); 

在面向對象的方式:

$html = new simple_html_dom(); 
    $htmlContent = $html->load_file('your url'); 
    $htmlContent->find('select[name= "union"]'); 
相關問題