Инвертирование регистра букв

id9999i

Новичок
Инвертирование регистра букв

Здравствуйте!
Как реализовать инвертирование регистра букв?
Пр:
ываАЫЫasdADSAdasdaASDASD
->
ЫВАаыыASDadsaDASDAasdasd
 

Sepuka

Новичок
Ну есть же таблица символов, берешь ord() и прибавляешь/удаляешь N из номера. Это первое что приходит в голову.
 

id9999i

Новичок
PHP:
$str = "aCbAcB";
$a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZабвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
$c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
for ($i = 0; $i <= strlen ($a); $i++) {
	$b[$i] = ord ($a[$i]);
	}
for ($i = 0; $i <= strlen ($c); $i++) {
	$d[$i] = ord ($c[$i]);
	}
for ($i = 0; $i <= strlen ($str); $i++) {
	$strord[$i] = ord ($str[$i]);
	}
$g = str_replace ($b, $d, $strord);
foreach ($g as $key => $value) {
	$h .= chr ($g[$key]);
	}
echo "<pre>";
print_r ($b);
print_r ($d);
print_r ($strord);
print_r ($g);
print_r ($h);
Почему все в нижнем выходит?
А если $g = str_replace ($d, $b, $strord); - в верхнем.
 

prolis

Новичок
можно проще
PHP:
$str = "aCbAcB"; 
for ($i = 0; $i <= strlen ($str); $i++) 
{ 
if (strtoupper($str[$i]) == $str[$i]) 
 $str[$i]=strtolower($str[$i]);
else
 $str[$i]=strtoupper($str[$i]);
}
 

Крот

Новичок
Автор оригинала: prolis
можно проще
PHP:
$str = "aCbAcB"; 
for ($i = 0; $i <= strlen ($str); $i++) 
{ 
if (strtoupper($str[$i]) == $str[$i]) 
 $str[$i]=strtolower($str[$i]);
else
 $str[$i]=strtoupper($str[$i]);
}
Спасибо! Для меня реально открытие, что к символам строки можно по индексам обращаться!
В какой версии PHP это добавили?


UPDATE: С кириллицей проблемы возникают, если в utf8 сохранять. А в ansi нормально... странно.
 

prolis

Новичок
Автор оригинала: Крот
Спасибо! Для меня реально открытие, что к символам строки можно по индексам обращаться!
В какой версии PHP это добавили?
вот кусок вышепреведенного кода:
PHP:
for ($i = 0; $i <= strlen ($str); $i++) { 
    $strord[$i] = ord ($str[$i]);
 
Сверху