PHP извлекает данные формы с помощью Snoopy

Я использую Snoopy для извлечения формы с веб-сайта. Результаты которого выглядят так...

<form action="sendmessage.aspx">
<input type="hidden" name="" value="" />
<input type="hidden" value="103330268" name="usersendto" />
<input type="hidden" value="Bla343" name="sendto" />
<input type="hidden" value="94302158" name="p_id" />
<input type="hidden" value='' name='SID' />
<input type="hidden" value='' name='guid' />

То, что я хочу сделать сейчас, это превратить это в это...

$p_data[''] = '';
$p_data['usersendto'] = '103330268';
$p_data['sendto'] = 'Bla343';
$p_data['p_id'] = '94302158';
$p_data['SID'] = '';
$p_data['guid'] = '';

Не знаю, с чего начать...

1 ответ

Snoopy выдаст вам HTML формы в виде строки. Затем вам нужно манипулировать этим. Чтобы сделать HTML-теги, вы должны проанализировать его как DOM или, в старой школе, вы можете осторожно использовать регулярные выражения.

$results = <<< EOF
<form action="sendmessage.aspx">
<input type="hidden" name="" value="" />
<input type="hidden" value="103330268" name="usersendto" />
<input type="hidden" value="Bla343" name="sendto" />
<input type="hidden" value="94302158" name="p_id" />
<input type="hidden" value='' name='SID' />
<input type="hidden" value='' name='guid' />
EOF;

$p_data=[];
preg_match_all("/<\s*input(.*?)>/sim",$results,$input_tags);
foreach ($input_tags[1] as $input_tag) {
    preg_match("/name\s*=\s*[\'\"](.*?)[\'\"]/sim",$input_tag,$name);
    preg_match("/value\s*=\s*[\'\"](.*?)[\'\"]/sim",$input_tag,$value);
    if (is_array($name) AND is_array($value)) {
        $p_data[$name[1]] = $value[1];
    }
}

foreach ($p_data as $key => $value) {
    print "'$key' = '$value'<br>";
}
Другие вопросы по тегам