【问题标题】:How to return multiple variables with different capitalization combinations | PHP如何返回具有不同大小写组合的多个变量 | PHP
【发布时间】:2014-03-18 02:00:55
【问题描述】:

好的,我会尽量简化。

我有一个脚本可以在文件中搜索变量$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";

我想知道如何反转大写。 (我也想知道多行的cmets能不能用在一行中间)

我正在考虑只使用 str_replace 函数,但我懒得输入字母 4 次。

任何帮助将不胜感激。 :)

【问题讨论】:

    标签: php function capitalization


    【解决方案1】:

    使用一些字符串函数,可以实现您所需要的。我尽量远离正则表达式,因为单独的字符串函数(通常)更有效。在这种特殊情况下,我使用str_split() 将字符串转换为数组,并使用strtr()(字符串翻译)来转换大小写。使用 26 个字母的副本设置两个变量 $lcase$ucase 用于翻译。

    以下功能应该可以满足您的需求,从您的问题来看,您想要反转字符串的大小写。请注意,这也适用于超过两个字符的字符串。

    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"));
    

    ...将产生以下结果:

    string(2) "aa"
    string(2) "BB"
    string(2) "jW"
    string(2) "Rv"
    

    希望有帮助!

    【讨论】:

    • 但是: 我看到很多NULLs。救命!
    • 嗯...我将var_dump 替换为echo 并且NULLs 消失了。我想知道为什么?
    • @AlfredPersonMc 这很奇怪,使用 echovar_dump() 为我生成了类似的字符串结果。
    猜你喜欢
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    相关资源
    最近更新 更多