代码之家  ›  专栏  ›  技术社区  ›  faressoft

如何在php中使用regexp从字符串中提取用户名

  •  0
  • faressoft  · 技术社区  · 15 年前

    如何使用 正则表达式 在里面

    <?php
    
    $myString = "user=anas fares,pass=245654323456543dfgf345rgghf5y";
    
    //result should be :
    
    $username = "anas fares";
    $password = "245654323456543dfgf345rgghf5y";
    
    //remember, I dont know if username is anas fares or anything else.
    
    ?>
    
    2 回复  |  直到 15 年前
        1
  •  4
  •   Alin P.    15 年前

    A、 非正则表达式方法。

    // deprecated //
    list($username, $password) = explode(',', $myString);
    $username = explode('=', $username);
    $username = str_replace('+', ' ', $username[1]);
    $password = explode('=', $password);
    $password = $password[1];
    
    // new version, independent of order //
    $pairs = explode(',', $myString);
    foreach($pairs as $pair){
        list($key, $value) = explode('=', $pair);
        $results[$key] = str_replace('+', ' ', $value);
    }
    // $results['user']
    // $results['pass']
    

    /^user=([^,]*),pass=(.*)$/
    

    C。 parse_str . 这个 这可能是最好的选择。

    parse_str(str_replace(',', '&', $myString), $results);
    
        2
  •  5
  •   Lekensteyn    15 年前
    if(preg_match('/^user=(.+?),pass=(.+?)$/', $myString, $matches)){// if there's no match, this won't be executed
       $username = $matches[1];
       $password = $matches[2];
    }
    

    . . E、 例如,您知道密码只包含字符a-z(仅小写)和0-9,您应该替换第二个(.+?)通过 [a-z0-9]+? +? 通过 {32}