2017-07-09 52 views
0

我apologyze爲標題中選擇輸入類型,我不知道如何正確地表達出來
但這裏是問題:PHP - 使用正則表達式

preg_match_all("/ (<input[^>]+>) | <select[^>]+>(.+?)<\/select | <textarea[^>]+>([^<]+) /xims", $form, $matches); 



形式我是看,有一個文件上傳輸入

<input type="file" name="upload"> 

但是當我做

print_r($matches); 


我得到的「文本」字段,但沒有「文件」字段牽強..

我想包括「文件」輸入型$匹配[]爲好。

我在正則表達式非常弱,而我用Google搜索了很多,但沒有發現任何確切..
我會感激你的答案,謝謝。

+0

檢查和糾正你的語法'INT preg_match_all(字符串$模式,字符串$主題[, array&$ matches [,int $ flags = PREG_PATTERN_ORDER [,int $ offset = 0]]])'(http://php.net/manual/en/function.preg-match-all.php) – rubin

回答

0

試試這個正則表達式:

/(?:<(select|textarea)[^>]*>[^<]+<\/\1>)|(<input[^>]*type=\"([a-z]+)\"[^>]*\/?>)/ximsg 

Regex Demo

樣品來源:(Run here

$re = '/(?:<(select|textarea)[^>]*>[^<]+<\/\1>)|(<input[^>]*type=\"([a-z]+)\"[^>]*\/?>)/xims'; 
$str = '<input type="file" name="upload"> 
<input type="text" name="upload1"> 
<select > bla bla bla </select> 
<textarea>abc</textarea> 
'; 

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0); 
var_dump($matches); 
+0

仍然一樣問題.... –