我有很多字符串要在php中处理.我想"修复"它们作为标题案例(使用ucwords(strtolower($str))),但前提是它们都是大写或全部小写.如果它们已经是混合的情况,我只是将它们保留原样.
检查这个的最快方法是什么?似乎for通过字符串将是一个相当缓慢的方式来解决它.
这就是我所拥有的,我认为这将太慢:
function fixCase($str)
{
$uc = 0;
$lc = 0;
for($i=0;$i<strlen($str);$i++)
{
if ($str[$i] >= 'a' && $str[$i] <= 'z')
$lc++;
else if ($str[$i] >= 'A' && $str[$i] <= 'Z')
$uc++;
}
if ($uc == 0 || $lc == 0)
{
return ucwords(strtolower($str));
}
}
Run Code Online (Sandbox Code Playgroud)
只需使用字符串比较(区分大小写)
function fixCase($str)
{
if (
(strcmp($str, strtolower($str)) === 0) ||
(strcmp($str, strtoupper($str)) === 0) )
{
$str = ucwords(strtolower($str));
}
return $str;
}
Run Code Online (Sandbox Code Playgroud)