PHP: $type=2; $logins[$type]=array('email', 'mail', 'user', 'name', 'login', 'username'); for($l=0;$l<count($logins[$type]);){ echo $logins[$type][$l].":"; preg_match_all("#<input.*name=[\",']([^<]*{$logins[$type][$l]}[^<]*)[\",'].*>#isU", $site, $username); $pos_un=stripos($username[1][0], $logins[$type][$l]); if(empty($pos_un))$l++; else break; } preg_match_all не видит в переменной $logins[$type][$l] слово login, но слово там есть. проверял через echo который находится в цикле: PHP: for(...){ echo $logins[$type][$l].":"; ... } echo показывает все значения массива, которые перебирает цикл, в итоге на странице браузера выводится: email:mail:user:name:login:username: preg_match тоже по всему видимому работает правильно, так как если ввести: PHP: <input.*name=[\",']([^<]*login[^<]*)[\",'].*> тоесть просто слово login вместо $logins[$type][$l], то в username[1][0] сохраняется именно то что требуется. тоесть прег находит всё правильно. В чем же дело? в чем отличается $logins[$type][$l] хранящая в себе слово login от слова login? для сведения: я пробовал записывать прегу по разному: и так: PHP: <input.*name=[\",']([^<]*".$logins[$type][$l]."[^<]*)[\",'].*> и так .*: PHP: <input.*name=[\",'](.*".$logins[$type][$l].".*)[\",'].*> и без .*: PHP: <input.*name=[\",'](".$logins[$type][$l].")[\",'].*> вобщем по всякому..
PHP: echo "#<input.*name=[\",']([^<]*{$logins[$type][$l]}[^<]*)[\",'].*>#isU"; и смотри чем отличается
смотри исходник страницы Всё нормально работает, но зачем парсить имя input'a которое, сам и задаёшь....
я еще поставил ".*" (или [^<]*)по бокам, то есть инпут может содержать в своем имени помимо своего полного имени еще и часть того что я задал. например formname или userlogin ну или ?act=login(но это в случае form action) кстати исходный код получился таким: PHP: #<input.*name=[",']([^<]*[^<]*)[",'].*>#isU#<input.*name=[",']([^<]*[^<]*)[",'].*>#isU он не видит и не читает $logins[$type][$l], странно, почему?
исходник той страницы, которую я прег_матч_алл'ю? вот: mail.ru вот тот самый фрагмент кода: PHP: .............. <tr> <td class="login"><input type="text" class="long" size="10" name="Login" tabindex="3" value="" /><div> </div></td> ... ... ... ... ... <td><input type="password" class="long" size="15" name="Password" tabindex="5" value="" /></td> ........... password я нахожу через type, а не name
всё, почти полностью поменял свой код и заработало, не знаю почему но теперь всё работает сенькс за ответы