2011-03-19 77 views
1

我在這裏找不到任何東西或谷歌有關解析隱藏的輸入值。比如這段代碼就在這裏。我正試圖解析40個字符的鍵。如何解析隱藏的輸入值

<input type="hidden" name="key" value="c126b4f134cb2c1184c1585fdfa4d1b0013a12f4"> 

我試過這個,但它永遠不會返回任何隱藏的值。

libxml_use_internal_errors(TRUE); 
    $dom = new DOMDocument; 
    $dom->loadHTMLFile('http://www6.cbox.ws/box/?boxid=524970&boxtag=7xpsk7&sec=form'); 
    libxml_clear_errors(); 

    $xp = new DOMXpath($dom); 
    $nodes = $xp->query('//input/@value'); 
    foreach($nodes as $node) 
     { 
      echo($node->textContent . "<br><br>"); 
     } 

var_dump($node); 

更新代碼

libxml_use_internal_errors(TRUE); 
$dom = new DOMDocument; 
$dom->loadHTMLFile('http://www6.cbox.ws/box/?boxid=524970&boxtag=7xpsk7&sec=form'); 
libxml_clear_errors(); 

$xp = new DOMXpath($dom); 
$nodes = $xp->query('//input[type="hidden"]'); 
$val = $nodes->getAttribute('value'); 

var_dump($val); 

返回此錯誤參照線 「$ VAL = $節點 - >的getAttribute( '值');」

Fatal error: Call to undefined method DOMNodeList::getAttribute() 
+0

XPath返回的NodeList作爲它的結果,而不是一個節點。改爲使用'$ nodes [0] - > getAttribute()'。 – 2011-03-19 02:56:53

回答

2
$nodes = $xp->query('//input[type="hidden"]'); 
foreach ($nodes as $node) { 
    $val = $node->getAttribute('value'); 
} 

評論隨訪:

如果你看一下你已經包含在您的代碼示例中的頁面的源代碼,你會看到這裏只有一個隱藏的表單字段,並且它有一個空值:

<input type="hidden" name="key" value=""> 

所以當然XPath將返回一個NULL值 - 這就是存儲在該值屬性中的值:無。

+0

@Marc B我試過這個,但我得到「NULL」 – jennifer 2011-03-19 02:14:41

+0

@jennifer:該頁面中唯一隱藏的字段是'。所以也許這就是爲什麼你沒有結果。你的問題的' - > textContent'在任何情況下都是空的(?) – mario 2011-03-19 02:18:39

+0

@mario是每個循環都沒有必要,因爲這個代碼只有一個實例,就像你說的那樣,但是如何獲得那個字符串從價值? – jennifer 2011-03-19 02:37:35

0

使用您的更新代碼,固定的版本將是:

<?php 

libxml_use_internal_errors(TRUE); 
$dom = new DOMDocument; 
// This link is now dead... 
$dom->loadHTMLFile('http://www6.cbox.ws/box/?boxid=524970&boxtag=7xpsk7&sec=form'); 
libxml_clear_errors(); 

$val = array(); // Must be set before foreach loop 

$xp = new DOMXpath($dom); 
$nodes = $xp->query('//input[type="hidden"]'); 
foreach ($nodes as $node) { 
    $val[] = $node->getAttribute('value'); 
} 

var_dump($val); 

?>