Иногда случается так, что из-за проблем с локалями в PHP функции strtolower и strtoupper перестают работать с русским текстом. Если нет времени разбираться, а нужно быстро получить результат, можно воспользоваться таким кодом:
function toupper($content)
{
$content = strtr($content, “абвгдеёжзийклмнорпстуфхцчшщъьыэюя”,
“АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ”);
return strtoupper($content);
}function tolower($content)
{
$content = strtr($content, “АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ”,
“абвгдеёжзийклмнорпстуфхцчшщъьыэюя”);
return strtolower($content);
}
Более подробную информацию всегда можно найти на сайте php.net. В поиске по функциям strtolower и strtoupper.
18.03.2008 в 00:40
помоему там надо мультибайтовые функции для уникода использовать.. mb_strtoupper
18.03.2008 в 01:39
Артём Курапов: Какое отношение имеют мультибайтовые(UTF8, UTF16…) текстовые операции к локалям?
18.03.2008 в 10:49
[…] предыдущем примере я предложил быстрое решение проблемы, при которой […]
18.03.2008 в 12:35
Упс. Не вчитался, да и локали если честно не использовал никогда - переводы делаю сам, да и проблем с запятыми и точками не хочется. У меня просто были проблемы с уникодом в обычных функциях.. там правда и другие кодировки присутсвовали.
18.03.2008 в 15:44
Хороший код, множно значительно упростить себе работу, имея его под рукой. Автору спасибо!
22.03.2008 в 05:07
Автору спасиб
27.03.2008 в 15:29
Не вчитался, да и локали если честно не использовал никогда - переводы делаю сам, да и проблем с запятыми и точками не хочется. У меня просто были проблемы с уникодом в обычных функциях.. там правда и другие кодировки присутсвовали.
03.04.2008 в 00:35
интересно поможет ли мне
спасибо за мысли попробую
04.04.2008 в 20:17
“… Если нет времени разбираться, а нужно быстро получить результат, можно воспользоваться …” - как раз мой случай, правда пришлось дописать украинские буквы.
14.07.2008 в 05:15
только лучше вначале применить strtolower к строке, а потом уже strtr, т.е.
function tolower($content){
$content = strtolower($content);
$content = strtr($content,
“АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ”,
“абвгдеёжзийклмнорпстуфхцчшщъьыэюя”);
return $content;
}
Может быть для многих разницы нет, но у меня strtolower(’тест’) возвращает ‘ТЕСТ’, даже если вручную локаль установить.