|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 64760.1430 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
18.10.2010, 20:41
|
#1
|
n/a
Регистрация: 18.02.2009
Сообщений: 162
Бабло: $46620
|
вопрос по работе с формами на php
Столкнулся с проблемой.
Есть форма, нужно собрать все ее данные в виде параметр=значение, казалось бы можно было с помощью preg_match всю эту инфу собрать, а потом на основе этих данных сформировать post_data и запульнуть куда надо, но есть загвоздка.
Кол-во полей у формы динамично, иногда появлются в разных местах hiddenы, такое обработать регекспами уже проблематично.
Встречался ли кому-нибудь метод сбора этих данных более оптимальным способом, может кто класс видел?
|
|
|
18.10.2010, 21:07
|
#2
|
Бабло победит зло
Регистрация: 20.06.2008
Сообщений: 2,579
Бабло: $346045
|
Мету из принципа не помогу
|
|
|
18.10.2010, 21:10
|
#3
|
n/a
Регистрация: 18.02.2009
Сообщений: 162
Бабло: $46620
ТС -->
|
ТС
Цитата:
Сообщение от JackSoft
Мету из принципа не помогу
|
того принципа что время потратил и жалко даром отдавать?
|
|
|
18.10.2010, 21:33
|
#4
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
не могу понять, почему preg_match_all не подходит, просто нужно составить правильные правила и все
|
|
|
18.10.2010, 21:43
|
#5
|
Senior Member
Регистрация: 15.11.2008
Сообщений: 13,230
Бабло: $247845891
|
Цитата:
Сообщение от chesser
не могу понять, почему preg_match_all не подходит, просто нужно составить правильные правила и все
|
он хочет, чтобы за него составили
|
|
|
18.10.2010, 21:49
|
#6
|
Senior Member
Регистрация: 01.11.2007
Сообщений: 2,269
Бабло: $288535
|
Всё регекспами выдирается. Один на инпуты, один на селекты, один на текстарею и все дела.
|
|
|
18.10.2010, 22:32
|
#7
|
Senior Member
Регистрация: 10.10.2010
Сообщений: 1,059
Бабло: $126610
|
а в какой момент появляется опасность использования всяких спец.символов в вводе пользователя?
типа |> или \0x или там ";print
разве не сразу надо весь ввод экранировать и проверять?
|
|
|
18.10.2010, 22:57
|
#8
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
если лень регексп писать, то можно домом:
PHP код:
<?php $html = file_get_contents('http://www.gofuckbiz.com/showthread.php?t=19750'); $doc = new DOMDocument(); $doc->loadHTML($html); $inputs = $doc->getElementsByTagName('input'); // тут вписать нужный тег foreach($inputs as $el) echo $el->getAttribute('name') . '=' . $el->getAttribute('value') . PHP_EOL; ?>
или, если нужно фильтровать input'ы, то удобно через dom xpath
|
|
|
22.10.2010, 16:06
|
#9
|
n/a
Регистрация: 18.02.2009
Сообщений: 162
Бабло: $46620
ТС -->
|
ТС
Цитата:
Сообщение от chesser
если лень регексп писать, то можно домом:
PHP код:
<?php
$html = file_get_contents('http://www.gofuckbiz.com/showthread.php?t=19750');
$doc = new DOMDocument();
$doc->loadHTML($html);
$inputs = $doc->getElementsByTagName('input'); // тут вписать нужный тег
foreach($inputs as $el)
echo $el->getAttribute('name') . '=' . $el->getAttribute('value') . PHP_EOL;
?>
или, если нужно фильтровать input'ы, то удобно через dom xpath
|
рассчитывать на то, что формы будут валидными с точки зрения xml слишком наивно, поэтому дом не катит. Буду думать в сторону регекспов более глобально.
|
|
|
22.10.2010, 22:51
|
#10
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
Цитата:
Сообщение от Nosfer
рассчитывать на то, что формы будут валидными с точки зрения xml слишком наивно, поэтому дом не катит. Буду думать в сторону регекспов более глобально.
|
а ты используй tidy(или автокорректор там какой-то есть), который включается в dom'е, и будет не наивно. В большинстве случаев невалидные сайты нормально парсятся, проверенно на моем парсере не на одном сайте...
регексп тоже норм, не сложно
|
|
|
|