簡體   English   中英

如何在php中使用regexp從字符串中提取用戶名

[英]How can i extract a username from string using regexp in php

如何在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.

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

如果您知道允許使用哪些字符,則建議使用字符類或. 例如,您知道密碼僅包含字符az(僅小寫)和0-9,您應將第二個(。+?)替換為[a-z0-9]+? 如果您甚至知道它是固定長度,那么在MD5哈希的情況下,您應該替換+? {32} (md5的固定長度為32)

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

B.正則表達式。

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

C. parse_str 我推薦這個,這可能是最好的選擇。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM