好的,我会尽量让这件事简单化。
我有一个脚本,它在文件中搜索变量$search。变量$search是用户输入$user的前两个字母。
我想做的是找出$search的两个字母的大写字母是什么,然后从这些信息中生成更多的变量。
基本的布局理念是:
$cap1 = /*the capitalization of $search[0]*/;
$cap2 = /*the capitalization of $search[1]*/;
if (/*capitalization of $cap1 is UPPERCASE*/){
$uncap1 = /*LOWERCASE capitalization of $cap1*/;
} else if (/*capitalization of $cap1 is LOWERCASE*/){
$uncap1 = /*LOWERCASE capitalization of $cap1*/;
}
if (/*capitalization of $cap2 is UPPERCASE*/){
$uncap2 = /*LOWERCASE capitalization of $cap2*/;
} else if (/*capitalization of $cap2 is LOWERCASE*/){
$uncap2 = /*LOWERCASE capitalization of $cap2*/;
}
echo "Original phrase:" . $search . "\n";
echo "New phrase:" . $uncap1 . $uncap2 . "\n";我想知道如何逆转资本化。(我还想知道行中间是否可以使用多个“注释”)。
我正在考虑只使用一个str_replace函数,但是我太懒了,不想输入4次字母表。
任何帮助都将不胜感激。:)
发布于 2014-03-18 02:30:43
使用一些字符串函数,您看起来需要的就可以实现。我尽量避免使用正则表达式,因为单独使用字符串函数(通常)更有效。在这种情况下,我使用str_split()将字符串转换为数组,使用strtr() (字符串转换)来转换这些情况。将两个变量$lcase和$ucase设置为26个字母的副本用于翻译。
下面的函数应该做您需要做的事情,从您的问题的声音来看,您想要反转字符串的情况。注意,这也适用于两个以上字符的字符串。
function translateCase($str)
{
$lcase = "abcdefghijklmnopqrstuvwxyz";
$ucase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$rebuilt = "";
foreach(str_split($str) as $char) {
if(strstr($lcase, $char)) {
$rebuilt .= strtr($char, $lcase, $ucase);
} else {
$rebuilt .= strtr($char, $ucase, $lcase);
}
}
return $rebuilt;
}用这个函数做例子..。
var_dump(translateCase("AA"));
var_dump(translateCase("bb"));
var_dump(translateCase("Jw"));
var_dump(translateCase("rV"));...will产生以下结果:
string(2) "aa"
string(2) "BB"
string(2) "jW"
string(2) "Rv"希望这能帮上忙!
https://stackoverflow.com/questions/22469047
复制相似问题