Как может я подкачивать вокруг / переключается случай символов в строке, например:
$str = "Hello, My Name is Tom";
После того, как я выполню код, я получаю результат как это:
$newstr = "hELLO, mY nAME Is tOM";
Это даже возможно?
Вам нужно будет перебрать строку, проверяя регистр каждого символа, вызывая strtolower ()
или ] strtoupper ()
соответствующим образом, добавляя измененный символ в новую строку.
Я полагаю, что решением может быть что-то вроде этого:
$str = "Hello, My Name is Tom";
$newStr = '';
$length = strlen($str);
for ($i=0 ; $i<$length ; $i++) {
if ($str[$i] >= 'A' && $str[$i] <= 'Z') {
$newStr .= strtolower($str[$i]);
} else if ($str[$i] >= 'a' && $str[$i] <= 'z') {
$newStr .= strtoupper($str[$i]);
} else {
$newStr .= $str[$i];
}
}
echo $newStr;
Что дает вам:
hELLO, mY nAME IS tOM
т.е. you:
Проблема в том, что это, вероятно, не будет хорошо работать со специальными символами, такими как акценты: - (
И вот быстрое предложение, которое может (или не может) работать для некоторые другие символы:
$str = "Hello, My Name is Tom";
$newStr = '';
$length = strlen($str);
for ($i=0 ; $i<$length ; $i++) {
if (strtoupper($str[$i]) == $str[$i]) {
// Putting to upper case doesn't change the character
// => it's already in upper case => must be put to lower case
$newStr .= strtolower($str[$i]);
} else {
// Putting to upper changes the character
// => it's in lower case => must be transformed to upper case
$newStr .= strtoupper($str[$i]);
}
}
echo $newStr;
Теперь можно использовать mb_strtolower
и mb_strtoupper
: это может помочь со специальными символами и многобайтовыми кодировками ...
Хорошо, я знаю, что у вас уже есть ответ, но несколько непонятная функция strtr () требует для этого использования;)
$str = "Hello, My Name is Tom";
echo strtr($str,
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');