Часто на странице есть множество input`ов с уже заполненными значениями. Если их 2-3, то парсинг не утомляет, а вот если это например форма изменения информации в какой-нибудь соц. сети — это быстро надоедает.
Сегодня как раз столкнулся с такой ситуацией, моя лень пошла на пользу — спарсил все инпуты одной регэкспой, а затем изменил значения только необходимых инпутов.
Сама регэкспа:
<input.*?name=['|"](?<name>.*?)['|"].*?value=['|"](?<value>.*?)['|"].*?> |
Модификаторы: m (multiline), i (case insensitive).
Использование на PHP:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | preg_match_all('/<input.*?name=[\'|"](?<name>.*?)[\'|"].*?value=[\'|"](?<value>.*?)[\'|"].*?>/im', $page, $matches); $post = array(); foreach ($matches['name'] as $key => $value) { $post[$value] = $matches['value'][$key]; } // Смотрим POST: print_r($post); // В случае, если форма не одна - удаляем ненужные инпуты с помощью unset // Модифицируем некоторые значения: $post['Email'] = $username; $post['Passwd'] = $password; $post['timeStmp'] = time(); // Формируем RAW POST, если используется cURL, то этого можно не делать $raw = http_build_query($post); |