Регулярные выражения

Discussion in 'PHP' started by sataite, 18 Dec 2010.

  1. sataite

    sataite New Member

    Joined:
    10 Dec 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    не понимаю почему не работает, если всё правильно и оно должно работать.
    вобщем поставьте диагноз и скажите в чем дело)):

    PHP:
    preg_match_all("#<input.*name=\"(.*{$logins[$type][$l]}.*)\".*>#isU"$site$username);
    в в скобках находится слово "user" (т.е. в переменной $logins[$type][$l] находится слово "user")
    но в $username[1][0] в итоге пусто, тоесть не находит он там этого слова
    а если написать так:
    PHP:
    preg_match_all("#<input.*name=\"(.*user.*)\".*>#isU"$site$username);
    то выводит всё правильно. почему??
    я пробовал по разному записывать то что в скобках:
    PHP:
    (.*?{$logins[$type][$l]}.*?)
    (.*{
    $logins[$type][$l]}.*?)
    ([^<]*{
    $logins[$type][$l]}[^<]*)
    (.*{
    $logins[$type][$l]}[^<]*)
    #даже просто вот так:
    ({$logins[$type][$l]})
     
    #1 sataite, 18 Dec 2010
    Last edited: 18 Dec 2010
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    sataite
    PHP:
    var_dump($logins[$type][$l]);
    preg_match_all("#<input.*name=\"(.*".preg_quote($logins[$type][$l],'#').".*)\".*>#isU"$site$username);  
     
    _________________________
  3. sataite

    sataite New Member

    Joined:
    10 Dec 2010
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    не помогло, осталось всё также:
    [​IMG]

    через массив logins[$type] я перебираю имена которые там могут быть
    массив в себе содержит: array('user', 'name', 'login' и т.д. )


    вобщем вот код:
    PHP:
    for($l=0;$l<count($logins[$type]);){
                
    #echo $logins[$type][$l];
                
    var_dump($logins[$type][$l]);
                
    preg_match_all("#<input.*name=\"(.*".preg_quote($logins[$type][$l],'#').".*)\".*>#isU"$site$username);
                
    $pos_un=stripos($username[1][0], $logins[$type][$l]);
                if(empty(
    $pos_un))$l++; else break;
            }echo 
    $logins[$type][$l]."!".$username[1][0];
    #echo $logins[$type][$l]; показывает слово name, почему? почему он не break'ает на слове user? так как именно слово user находится в input'e:
    HTML:
    <input type="text" name="user"  size="10" />
      <input type="password" name="passwrd"  size="10" />
      <input type="submit" value="Войти" />
      <input type="hidden" name="hash_passwrd" value="" />
    а если написать так:
    PHP:
    preg_match_all("#<input.*name=\"(.*user.*)\".*>#isU"$site$username);
    оно заработает и в $username[1][0] будет находится именно user
    в чем разница между массивом содержащее слово user и словом user?
     
    #3 sataite, 18 Dec 2010
    Last edited: 18 Dec 2010