gpt4 book ai didi

php - 如何改变php中字符串的大小写?密码到密码?

转载 作者:可可西里 更新时间:2023-11-01 13:11:25 25 4
gpt4 key购买 nike

如本Meta Question所述, 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)

如何获得第二个变体,前提是第一个变体是用户输入的原始变体(或者当用户输入第二个版本时获得第一个变体)?这是我对此的看法。

<?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;
?>

但是如何让它处理带有特殊字符的密码(在标准英文键盘上都可以?

!@#$%^&*()_+|?><":}{~[];',./     (Space also)

这不适用于上述所有特殊字符。

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.
}

我不是 RegEx 专家,那么如何修改上面的 RegEx 以确保它处理所有上述特殊字符?

最佳答案

为了反转字符串的大小写,我使用了这个函数:

function invert_case($string) {
return preg_replace('/[a-z]/ie', '\'$0\' ^ str_pad(\'\', strlen(\'$0\'), \' \')', $string);
}

我在 php.net manual 中找到了它很久以前,当我想做同样的事情时。我只是把它变成了一个函数。

关于php - 如何改变php中字符串的大小写?密码到密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10718236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com