我正在尝试扫描表单,只拔出不是type =“hidden”的字段并检索其名称=“”值,我目前正在使用
@<input.*?>@
为我检索以下内容,
(
[0] => Array
(
[0] => <input type="email" id="Contact0Email" name="email" class="field" onfocus="if ($(this).val() == $(this).attr('title')) { $(this).val('') }" onblur="if ($(this).val()=='') { $(this).val($(this).attr('title'));}" title="Enter a valid email here" value="Enter a valid email here">
[1] => <input type="submit" class="submit" value="Get Instant Access">
)
但是我不需要所有的代码,我必须进一步扫描以获得我需要的东西,任何人都可以建议我应该用什么正则表达式来获得我需要的东西?在这个例子中没有隐藏的字段,但是在其他一些我可能需要运行它。
答案 0 :(得分:0)
以下是快速而肮脏的解决方案:
$string = '<form name="input" action="html_form_action.asp" method="get">
<input type="hidden" name="foo" value="123"/>
Username: <input type="text" name="user" value="Ralph">
Pass: <input type="text" name="pass">
<input type="submit" value="Submit">
</form>';
$doc = new DOMDocument();
$doc->loadHTML($string);
$input = $doc->getElementsByTagName('input');
for ($i = 0; $i < $input->length; $i++) {
$el = $input->item($i);
if ($el->getAttribute('type') === 'hidden'
|| $el->getAttribute('type') === 'submit') continue;
echo $el->getAttribute('name')
.':'.$el->getAttribute('value')."\n";
}