$regexp = '/(?:<input\stype="hidden"\sname="){1}([a-zA-Z0-9]*)(?:"\svalue="1"\s\/>)/';
$response = '<input type="hidden" name="7d37dddd0eb2c85b8d394ef36b35f54f" value="1" />';
preg_match($regexp, $response, $matches);
echo $matches[1]; // Outputs: 7d37dddd0eb2c85b8d394ef36b35f54f
Так что я использую это регулярное выражение для поиска токена аутентификации на веб-странице, реализующей Joomla, для того, чтобы заготовить скриптовый логин.Ошибочные совпадения с регулярным выражением
У меня все это работает, но мне интересно, что не так с моим регулярным выражением, поскольку оно всегда возвращает 2 элемента.
Array ([0] => [1] => 7d37dddd0eb2c85b8d394ef36b35f54f)
Также имя ввода, которое я проверяю на изменение каждой загрузки страницы как по длине, так и по имени.
Спасибо. Ваше регулярное выражение кажется более легким для чтения, и я знаю, что вы не должны выполнять html-сопоставление с регулярным выражением, но это казалось для него отличным случаем. – Ballsacian1
@ Ballsacian1: Это ваши похороны. ;-) Взгляд в DOMDocument :: loadHTML и решение этой проблемы с DOM и XPath, возможно, стоит того. – Tomalak