2

次のことを試しましたが、うまくいかないようです

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';
}

ここで何か問題がありますか?期待される結果を達成するための最良の方法は何ですか?

4

3 に答える 3

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
于 2013-06-01T00:53:49.040 に答える