2013-06-01 27 views
2

大写字符我下面,它似乎试过没有工作为PHP,如何小写或字符串

if ($word[$index] >= 'a' && $word[$index] <= 'z') { 
    $word[$index] = $word[$index] - 'a' + 'A'; 
} else if ($word[$index] >= 'A' && $word[$index] <= 'Z') { 
    $word[$index] = $word[$index] - 'A' + 'a'; 
} 

这里有什么问题?达到预期结果的最佳方法是什么?

+1

让我澄清一下这个问题:你想一些特别的角色,成为小写,如果是大写,反之亦然? – raina77ow

+0

@ raina77ow我从这个问题得到同样的印象。 – wazy

+0

什么现在不适合你? – karthikr

回答

2

如果要更改整个字符串的大小写,请尝试:strtoupper($string)strtolower($string)。如果只想更改字符串首字母的大小写,请尝试:ucfirst($string)lcfirst($string)

还有str_replace(),区分大小写。你可以做一些像str_replace('a', 'A', $string);这样的全部小写字母'a'替换为大写字母'A'。

您可能需要查看php string functions的列表。

+0

看起来像他想改变每个元素的情况。 – karthikr

2

它看起来像你试图反转案件?

$word = strtolower($word)^strtoupper($word)^$word; 
2

如果你想逆字符串中的所有字母的情况下,这里有一个可能的方法:

$test = 'StAcK oVeЯfLoW'; 
$letters = preg_split('/(?<!^)(?!$)/u', $test); 
foreach ($letters as &$le) { 
    $ucLe = mb_strtoupper($le, 'UTF8'); 
    if ($ucLe === $le) { 
     $le = mb_strtolower($le, 'UTF8'); 
    } 
    else { 
     $le = $ucLe; 
    } 
} 
unset($le); 
$reversed_test = implode('', $letters); 
echo $reversed_test; // sTaCk OvEяFlOw 
相关问题