2015-03-25 85 views
1

我仍然非常學習正則表達式,我在這:(PHP:正則表達式得到NAME =「「S」值

我正在一個外部網頁,將其保存到本地文件吸 的頁面中包含一種形式,現在我需要找到所有的表單輸入的名字,並把它變成一個數組,例如:

<input type="text" name="firstName"> 

<input type="text" name="firstName" class="something"> 

從上面我只需要firstNa我進入我的陣列。

爲了使問題複雜化,只是一點點,我注意到人們有時寫有點不同,因爲空格字符,像這樣:

name= "firstName" 
name = "firstName" 
name ="firstName" 

由於我還在學習,我真的很感激,如果你能解釋一下你的正則表達式

+0

試'\ BNAME \ B \ S * = \ S * 「\ K [^」] +(=「?)' – 2015-03-25 12:33:19

+5

[鴕鳥政策解析HTML與͡r̡e͜g͘ex͟.͢](HTTP://計算器.COM /問題/ 1732348 /正則表達式匹配開放標籤,除了-XHTML-自足標籤)。改爲使用HTML解析器。對於相對較少量的HTML,這沒關係,但不是爲了達到目的。 – 2015-03-25 12:33:44

+0

或使用'DOMdocument :: getElementsByTagName'方法並遍歷,獲取name屬性。 – 2015-03-25 12:36:31

回答

1

簡單的例子:

<?PHP 

$myDocument = new DOMDocument; 
$myDocument->loadHTMLfile('example_page.html'); 

// Get form item(s) 
$formItems = $myDocument->getElementsByTagName('form'); 

// Get input items from first form item 
$inputItems = $formItems->items(0)->getElementsByTagName('input'); 

// Name attributes 
foreach ($inputItems as $inputName) { 
    echo $inputName->getAttribute('name') . "<br />"; 
} 

?> 
+0

使用你的例如,我得到了「致命錯誤:調用未定義的方法DOMNodeList :: items()」,這是'$ inputItems = $ formItems-> items(0) - > getElementsByTagName('input'); – Ryan 2015-03-25 14:39:38

1

您可以使用類似

$xmldoc = new DOMDocument(); 
$xmldoc->load('REQUIRED_URL'); 
foreach ($xmldoc->getElementsByTagName('form') as $formitem) { 
    $inputnodes = $formitem->getElementsByTagName('input'); 
    $name = $inputnodes->item(0)->getAttribute('name'); 
    echo $name; 
} 
+0

我一直得到這個警告(並沒有輸出比這個警告)'警告:DOMDocument :: load():打開和結束標記不匹配:鏈接線7和頭在...' – Ryan 2015-03-25 14:42:27