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 に答える