строчка в форме регистрации

Статус
В этой теме нельзя размещать новые ответы.

lungsmoney

Постоялец
Регистрация
25 Апр 2008
Сообщения
81
Реакции
23
Есть такая строка в форме регистрации:
PHP:
<input type="hidden" name="id" value="16312829432661791899">
Нужно вытащить значение 16312829432661791899
Пытаюсь это сделать так:
PHP:
preg_match_all('#<input type="hidden" name="id" value="(.*?)">#is', $f, $sor); 
$z = $sor[1];
Уже как только над шаблоном не изголялся, все равно выдает:Array
:mad:
Ткните носом - в чем я туплю
 
Попробуйте вот так:
$z = $sor[1][0];
А вообще посмотрите на этот массив с помощью print_r - поймете его структуру
 
так пробовал. Не работает.
PHP:
$z = $sor[1][0];
подозреваю что трабла с
PHP:
(.*?)
думаю нужно как-то изменить нутро, типа
PHP:
[1-0]
Но в RegExps - нуб полный.
print_r ,как и echo - выдает Array
Причем
PHP:
var_dump($sorr[1][0]);
выдает число, а сохранить его - ну никак не могу
 
PHP:
preg_match('/<input[^>]+type="hidden"[^>]+name="id"[^>]+value="(\d+)">/is', $f, $sor);

рекомендую вначале выбирать все скрытые поля, после уже разбирать их, так как при перестановке аттрибутов местами регулярное выражение необходимо будет менять
 
Код:
value="(\d+)"
можно, но часто там также буквы попадаются. пишу граббер, где в таком же поле есть буквы и цифры, у меня сработала такая версия:

если ожидается только одно совпадение:
Код:
preg_match('#<input type="hidden" name="id" value="([^"]*)#', $f, $sor); 
$z = $sor[1];
если несколько, то:
Код:
preg_match_all('#<input type="hidden" name="id" value="([^"]*)#', $f, $sor);
$z = $sor[1][0];
 
Для себя подобрал такую вот схему
PHP:
preg_match_all('#<input type="hidden" name="id" value="(\d{18,20})">#i'
и тд
работает,аж уши заворачиваются:yahoo:

Топик далее не актуален.
Спасибо всем за участие в решении проблемы.
 
Вам нужен preg_match вместо preg_match_all.
preg_match_all выдает массив в качесте $sor[1], это его правильное поведение. Значение hidden'а выможете получить как $sor[1][0], ну а в $sor[1][1] - значение второго hidden'а, если такой есть.
Ещё можно на всякий случай регулярку написать как
PHP:
'#<input type="hidden" name="id" value="([^"]*)">#i'
Так гарантированно получите значение hidden'а, что бы в нем ни было (кроме переносов строк, наверное).
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху