2015-08-09 75 views
1

我想弄清楚如何解析一個html頁面以獲取表單操作值,表單標籤內的標籤以及輸入字段名稱。我看着php.net Domdocument,它告訴我要得到一個孩子節點,但所有這些都會給我錯誤,它不存在。我也嘗試做持有html內容的變量的print_r,所有顯示我的是length = 1。有人可以給我看幾個我可以使用的樣本,因爲php.net令人困惑。使用DOMDocument檢索某些屬性

<?php 

$content = "some-html-source"; 
$content = preg_replace("/&(?!(?:apos|quot|[gl]t|amp);|#)/", '&amp;', $content); 

$dom = new DOMDocument; 
$dom->preserveWhiteSpace = FALSE; 
$dom->loadHTML($content); 

$form = $dom->getElementsByTagName('form'); 

print_r($form); 

回答

1

我建議使用DomXPath代替getElementsByTagName,因爲它可以讓你直接選擇的屬性值,並返回一個DOMNodeList對象就像getElementsByTagName@action中的@表示我們正在按屬性選擇。

$doc = new DOMDocument(); 
$doc->loadHTML($content); 
$xpath = new DomXPath($doc); 
$action = $xpath->query('//form/@action')->item(0); 
var_dump($action); 

同樣,拿到第一input

$action = $xpath->query('//form/input')->item(0); 

要獲得所有input領域

for($i=0;$i<$xpath->query('//form/input')->length;$i++) { 
    $label = $xpath->query('//form/input')->item($i); 
    var_dump($label);  
} 

如果你不熟悉使用XPath,我建議您查看these examples

+0

謝謝,我只是在調查domxpath(),//在查詢中做了什麼? –

+0

//搜索整個文檔 – FuzzyTree

+0

得到它感謝,如果你不介意的話,一個問題。在我使用的窗體上使用firebug的xpath路徑如下所示,/ html/body/div/div/form/div [2]/input。我如何在查詢中引用div [#]? –