我需要一種方法通過PHP腳本來提取網頁上的所有表單信息。 所以我有:如何使用PHP從HTML中提取所有表單信息
$ url =「http://somewebpage.com/」;
我需要的信息是:
的網頁上的所有形式的列表,以及他們的選擇/ atributes像:
樣本輸出將如下所示:
Form1中:表單名稱: 「登錄」,行動 「的login.php」,方法: 「GET」
- 輸入類型: 「文本」,名稱: 「usrname」
- 輸入類型: 「密碼」,名稱: 「通」
窗體2:表名: 「Login2身份」,行動: 「login2.php」,方法: 「POST」
- 輸入類型: 「文本」,名稱: 「USR」
- 輸入類型: 「密碼」,名稱: 「PWD」
我用下面的方法把網頁的HTML內容到一個變量:
// cURL
$browser_id = "some crazy browser";
$curl_handle = curl_init();
$options = array
(
CURLOPT_URL=>$url,
CURLOPT_HEADER=>true,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_FOLLOWLOCATION=>true,
CURLOPT_USERAGENT=>$browser_id
);
curl_setopt_array($curl_handle,$options);
$server_output = curl_exec($curl_handle);
curl_close($curl_handle);
然後,我用這個去除標題信息,只是保持HTML的東西,否則導致DOM總是給我錯誤。
$server_output2 = substr($server_output, stripos($server_output, "<html"));
的尋找的形式,我使用DOM
$dom = new DomDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->loadHTML($server_output2);
$params = $dom->getElementsByTagName('form'); // Find Sections
$k=0;
foreach ($params as $param){
$forms[$k][0] = $params->item($k)->getAttribute('name');
$forms[$k][1] = $params->item($k)->getAttribute('action');
$forms[$k][2] = $params->item($k)->getAttribute('method');
$k++;
}
但我的問題是,我經常從DOM得到錯誤,有關未關閉的標籤,或其他信息。我不想獲取這些信息。我怎樣才能使它工作? 另外我目前的代碼,只輸出表單信息,而不是表單中的輸入,我也想知道。我該如何做這項工作?感謝您的幫助。 您可以查看我的項目的遠程攻擊媒介(這是我需要它)在http://sourceforge.net/projects/rav/files/ 或檢查出我的網站:http://tamasiweb.hu
集CURLOPT_HEADER爲false。它不會添加任何標題。 – 2011-12-17 13:19:30
哦真棒!謝謝!!! – 2011-12-17 13:21:18