Dav*_*ana 6 php string facebook case
正如本Meta问题所述,Facebook接受我们密码的完全相反的案例变体.例如:
1.- paSSw5ORD (Original password)
2.- PAssW5ord (Case altered to exact opposite, Capital->Small and vice-versa.)
3.- PaSSw5ORD (Only first letter's case altered)
Run Code Online (Sandbox Code Playgroud)
如何获得第二个变体,前提是第一个变体是原始变体,由用户输入(或者在用户输入第二个版本时获得第一个变体)?这是我对此的看法.
<?php
$pass = "paSSw5ORD"; //Example password
$pass_len = strlen($pass); //Find the length of string
for($i=0;$i<$pass_len;$i++){
if(!(is_numeric($pass[$i]))){ //If Not Number
if($pass[$i]===(strtoupper($pass[$i]))){ //If Uppercase
$pass2 .= strtolower($pass[$i]); //Make Lowercase & Append
} else{ // If Lowercase
$pass2 .= strtoupper($pass[$i]); //Make Uppercase & Append
}
} else{ //If Number
$pass2 .= $pass[$i]; //Simply Append
}
}
//Test both
echo $pass."\r\n";
echo $pass2;
?>
Run Code Online (Sandbox Code Playgroud)
但是如何使用特殊字符处理密码(所有这些都可以在标准英文键盘上进行?
!@#$%^&*()_+|?><":}{~[];',./ (Space also)
Run Code Online (Sandbox Code Playgroud)
这不适用于所有上述特殊字符.
if(preg_match('/^\[a-zA-Z]+$/', "passWORD")){
//Special Character encountered. Just append it and
//move to next cycle of loop, similar to when we
//encountered a number in above code.
}
Run Code Online (Sandbox Code Playgroud)
我不是RegEx的专家,那么如何修改上面的RegEx以确保它处理所有上述特殊字符?
要反转字符串的大小写,我使用此函数:
function invert_case($string) {
return preg_replace('/[a-z]/ie', '\'$0\' ^ str_pad(\'\', strlen(\'$0\'), \' \')', $string);
}
Run Code Online (Sandbox Code Playgroud)
我很久以前在php.net手册中找到它,而我却想做同样的事情.我把它变成了一个功能.
这是一个切换字符串中字符大小写的函数。
<?php
$string = "Hello"; // the string which need to be toggled case
$string_length = strlen($string); // calculate the string length
for($i=0;$i<$string_length;$i++){ // iterate to find ascii for each character
$current_ascii = ord($string{$i}); // convert to ascii code
if($current_ascii>64 && $current_ascii<91){ // check for upper case character
$toggled_string .= chr($current_ascii+32); // replace with lower case character
}elseif($current_ascii>96 && $current_ascii<123){ // check for lower case character
$toggled_string .= chr($current_ascii-32); // replace with upper case character
}else{
$toggled_string .= $string{$i}; // concatenate the non alphabetic string.
}
}
echo "The toggled case letter for $string is <hr />".$toggled_string; // output will be hELLO
?>
Run Code Online (Sandbox Code Playgroud)
希望对你有帮助
此链接中给出了相同的示例。
归档时间: |
|
查看次数: |
323 次 |
最近记录: |