如何在php中使用正则表达式从字符串中提取用户名

时间:2010-11-07 08:15:54

标签: php javascript regex extract match

如何在 php

中使用 regexp 从字符串中提取用户名?
<?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 个答案:

答案 0 :(得分:5)

if(preg_match('/^user=(.+?),pass=(.+?)$/', $myString, $matches)){// if there's no match, this won't be executed
   $username = $matches[1];
   $password = $matches[2];
}

如果您知道允许使用哪些字符,建议使用字符类或.。例如,您知道密码只包含字符a-z(仅小写)和0-9,您应该用[a-z0-9]+?替换第二个(。+?)。如果您知道它是固定长度的,则在MD5哈希的情况下,您应该将+?替换为{32}(md5的固定长度为32)

答案 1 :(得分:4)

一个。非正则表达式。

// 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']

B中。正则表达式。

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

℃。 parse_str。这个我推荐,这可能是最好的选择。

parse_str(str_replace(',', '&', $myString), $results);