我为标题道歉,我不知道如何恰当地表达它 但问题出在这里:
preg_match_all("/ (<input[^>]+>) | <select[^>]+>(.+?)<\/select | <textarea[^>]+>([^<]+) /xims", $form, $matches);
在我正在看的形式中,有一个文件上传输入
<input type="file" name="upload">
但是当我这样做时
print_r($matches);
我得到“文本”字段,但没有提取“文件”字段..
我想在$ matches []中包含“文件”输入类型。
我在正则表达式中非常弱,而且我用Google搜索了很多,但没有发现任何确切的信息 我很感激你的回答,谢谢。
答案 0 :(得分:0)
试试这个正则表达式:
/(?:<(select|textarea)[^>]*>[^<]+<\/\1>)|(<input[^>]*type=\"([a-z]+)\"[^>]*\/?>)/ximsg
示例来源:(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);