反转一个英文句子中的单词,并且对应位置大小写不改变

输入一句英文句子,只有英文字(a-z, A-Z)、每个字之间仅以一个空格分格,前后没有空格。
返回的是要把每一个字的字母顺序倒转写,但字的顺序和字母的大小写位置则保持不変

示例:

输入参数This is an Apple on eBay

输出:Siht si na Elppa no yAbe

/**
 * 反转英文句子中的单词,并保持对应位置大小写不变
 * @param  [type] $str [description]
 * @return [type]      [description]
 */
function stringReverse($str){
    //将每个单词转为小写并反转
    $tmp = strtolower($str);
    $tmp = implode(" ",array_map("strrev",explode(" ", $tmp)));
    $strlen = strlen($tmp);

    //遍历原始字符串,将新字符串对应位置字符转为大写
    while($strlen > 0){
        $strlen--;
        $ord = ord($str{$strlen});

        if($ord > 64 && $ord < 90){
            $tmp{$strlen} = strtoupper($tmp{$strlen});
        }
    }

    return $tmp;
}

 

posted @ 2017-05-14 21:00  praglody  阅读(735)  评论(0编辑  收藏  举报