Вопрос № 31651: У меня такая проблема. Функции strtolower и strtoupper не работают с русскими символами. Вызов функции setlocale (LC_ALL, "ru_RU.CP1251"); не помогает. Править php.ini или другие конфиги хостинга нет возможности. Из-за чего такая проблема и...
Вопрос № 31.651
У меня такая проблема. Функции strtolower и strtoupper не работают с русскими символами. Вызов функции setlocale (LC_ALL, "ru_RU.CP1251"); не помогает. Править php.ini или другие конфиги хостинга нет возможности. Из-за чего такая проблема и можно ли ее решить?
Отвечает: Ерёмин Андрей
Здравствуйте, Ecclesiastes!
Значит, в PHP нет символов русского языка, поэтому и не работает. Можно просто написать свою функцию. Вот например StrToLowerRus() и StrToUpperRus():
<?php
function StrToLowerRus($str)
{
$rus_lower = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
$rus_upper = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
$res = $str;
for ($i = 0; $i < strlen($rus_upper); $i++)
{ $res = str_replace($rus_upper[$i],$rus_lower[$i],$res); }
return $res;
}
function StrToUpperRus($str)
{
$rus_lower = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя";
$rus_upper = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
$res = $str;
for ($i = 0; $i < strlen($rus_lower); $i++)
{ $res = str_replace($rus_lower[$i],$rus_upper[$i],$res); }
return $res;
}
print StrToLowerRus("Lower: КоМпЬюТеР ");
print StrToUpperRus("Upper: КоМпЬюТеР ");
?>
--------- Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 17.12.2005, 11:06
Отвечает: Дмитрий Иванов
Здравствуйте, Ecclesiastes!
напиши свою собственную функцию, либо доделай мои :)
все в приложении :)
Приложение:
--------- ставя оценку - подумай, может ты не все описал.
Ответ отправил: Дмитрий Иванов (статус: 9-ый класс)
Отправлен: 17.12.2005, 16:40
Отвечает: Константин
Здравствуйте, Ecclesiastes!
Решается просто: setlocale(LC_ALL, array ('ru_RU.CP1251', 'rus_RUS.1251'));
если не поможет, выполняешь асеревере команду $ locale -a, получаешь список всех локалей, смотришь как называется русская, ставишь ее. все.
Команду locale можно выполнить из консоли несли хостер разрешает что-то такое или из php
system('locale -a');
Ответ отправил: Константин (статус: 2-ой класс)
Отправлен: 18.12.2005, 00:05