2011-05-03 67 views
1

我想創建一些能夠通過PHP自動檢測HTML文件中的所有POST值。例如,當你看到在它形式的網站的源代碼,你會看到這樣的事情:檢測HTML源代碼中的文章值文件

<form id="someForm" action="register.php" method="post"> 

    Name: 
    <input type="text" name="username"><br> <!-- a post value "username" --> 
    Email: 
    <input type="text" name="email"><br> <!-- a post value "email" --> 
    Password: 
    <input type="password" name="password"><br> <!-- a post value "password" --> 

    <input type="submit" value="Submit"> <!-- submit button --> 

</form> 

所以我想要寫一個PHP腳本,它會自動檢測所有的POST值的發現在HTML文件中並將它們分類到一個數組中。

我想我會使用類似的東西,開始了:

<? 

    $file = file_get_contents("http://example.example/register.html"); 


?> 

我需要搜索所有的「NAME =」在$file變量,然後拿到引號之間的話。之後,將在引號之間找到的文本排序到數組中。

我想自動檢測HTML中提供的POST信息,並有一個PHP腳本,然後將這些值發佈到該表單。

我不知道哪個功能我會用於這個或如何,所以我在這裏問。示例代碼非常讚賞。謝謝。

+0

S /崗位價值/表單輸入/ GI – Phil 2011-05-03 03:56:41

回答

1

您可以將HTML加載到DOMDocument並使用DOMXPath來查詢它以專門查找名稱屬性。

例如:

$file = file_get_contents('url'); 

$dom = new DOMDocument; 
$dom->loadHTML($file); 

$xpath = new DOMXPath($dom); 
$nodes = $xpath->query('//@name'); //Find /all/ name attributes everywhere. 
foreach ($nodes as $node) { 
    echo "$node->value\n"; 
} 

請注意,作爲該評論意味着可以存在於比輸入其他元素名稱屬性,並且可以存在與除交其他的方法的形式來輸入。相應地修改XPath查詢('// input [@name]'找到所有具有name屬性的輸入,然後使用$node->getAttribute('name')而不是$node->value

+0

XPath查詢將看起來像'//形式[@方法=「郵報」]/* [@ name]' – Phil 2011-05-03 03:59:11

+0

請問我能舉個例子嗎? – Tim 2011-05-03 04:01:38

+0

添加示例 – 2011-05-03 13:48:42

0

你只是試圖自動化你的表單嗎?你也可以這樣做:

foreach($_POST as $key => $value) 
{ 
    echo $key . ": " . $value . "<br />"; 
} 
+0

我想自動檢測HTML中提供的POST信息,並有一個PHP腳本,然後將這些值發佈到該表單。 – Tim 2011-05-03 03:55:12

0

廣東話你做

<input type="hidden" name="username_post" value="<?php if (isset($_POST['username'])) { echo $_POST['username']; } ?>" /> 

您所有評論地點

然後你就可以通過文檔F循環?或具有此值的隱藏字段?我不確定你在做什麼,但是你確定這些值將通過file_get_contents?

而且 - 確保你的行動被設置爲您的當前頁面

+0

當他說「職位價值」時,他的意思是「形式投入」 – Phil 2011-05-03 04:11:39