0

我正在尝试扫描表单,只提取不是 type="hidden" 的字段并检索它们的 name="" 值,我目前正在使用

@<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">
    )

但是我不需要所有代码,我必须进一步扫描以获得我需要的东西,任何人都可以建议我应该使用什么正则表达式来获得我需要的东西?在此示例中,没有隐藏字段,但可能还有其他一些我需要运行它。

4

1 回答 1

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";

}
于 2013-03-27T02:18:40.687 回答