Форум сетевых администраторов
Показаны 12 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Перевод букв в верхний регистр (http://netadmin.ws/forum/showthread.php?threadid=10681)


Помещено Xrobak 23-05-2005 в 17:36:

Angry Перевод букв в верхний регистр

Не переводятся некоторые украинские буквы в верхний регистр, а именно: і, ї, є.
Делаю так:


PHP:


function upto($str) 
 {
  
setlocale (LC_ALL, "ru_RU.CP1251");
  return 
preg_replace("/([a-zxE0-xFF])/e","chr(ord('\1')-32)",($str));
 }
echo 
upto("~ телефоний довiдник ~");


Пример: Контактна інформація - фразы "Контактна інформація" и "Телефонний довідник".

Если использовать стандартную функцию strtoupper(), то английские буквы в таком случае переводятся в верхний регистр, а русские и украинские буквы вообще не переводятся в верхний регистр.

С чем может быть связана проблема? Может с версией php (4.3.11) или mysql (4.0.24) ? Хотя нет, не в пхп дело, несколько друзей напряг, у них разные версии пхп установлены, на линуксовых машинах не работает, а вот на виндовых - работает.

Есть предположение, что можно каким-то образом модифицировать написанную выше функцию upto($str). Я выяснил, что украинские буквы находятся в диапазоне 240 - 249 (F0 - F9). Остается теперь выяснить, как это все склеить в кучу, чтобы оно заработало.

Нид хелп!


Помещено Enkryptor 24-05-2005 в 11:26:

quote:

Если использовать стандартную функцию strtoupper(), то английские буквы в таком случае переводятся в верхний регистр, а русские и украинские буквы вообще не переводятся в верхний регистр.

С чем может быть связана проблема?


С тем, что только английские буквы имеют одни и те же коды в разных кодировках. Функция преобразования русских букв в верхний регистр будет различаться для кодировок KOI8-R, KOI8-U, Windows-1251 или UTF-8. Тебе какая нужна?


Помещено Xrobak 24-05-2005 в 11:44:

Сайт у меня на windows-1251, буду благадоране за оказанную помощь


Помещено Enkryptor 24-05-2005 в 13:35:

Подожди, если у тебя только буквы і, ї, є не заменяются на заглавные, так и добавь в функцию три строчки с str_replace, которые будут их заменять... не?


Помещено sVs 24-05-2005 в 17:26:

или, чтобы не париться, пойти более другим путем, указав полную таблицу транслитерации:

PHP:


function upto($str)
{
  return 
strtr($str,'абвгде...и т.д...','АБВГДЕ...и т.д...');
}

__________________
Всякое решение порождает новые проблемы...


Помещено Xrobak 26-05-2005 в 14:59:

sVs
спасибо, работает, все єлементарно просто, как я раньше не додумался

ЗЫ: а по сути... от чего такая проблема появляется - на винде работает, а на линухе нет? А то украинский язык уже не первый год живет, а до сих пор косяки есть

Xrobak добавил 26-05-2005 в 15:01:57:
Enkryptor
по идее вариант, предложенный sVs лучше применить, хотя твой тоже будет работать, только вот быстрее работать будет именно вариант от sVs, если я не ошибаюсь конечно...


Помещено Lesnix 29-05-2005 в 19:07:

quote:
ЗЫ: а по сути... от чего такая проблема появляется - на винде работает, а на линухе нет? А то украинский язык уже не первый год живет, а до сих пор косяки есть
В своё время я такую проблему(только с рус. буквами) был вынужден решать через regexp...
А вообще говоря, предлагалось использоать strtoupper(), настроив локаль. К примеру, посредством setlocale()


Помещено Xrobak 30-05-2005 в 12:53:

Lesnix
про setlocale() я знаю, но реально на линухе она не спасает, проверено на разных линуксовых машинах + я в самом первом посту писал пример функции, в которой настраивалась локаль, вот.


Помещено blacki 30-05-2005 в 15:49:

Xrobak попробуй фразу конвертнуть iconv'oм (http://lv2.php.net/iconv). А затем уже менять регистр.

__________________
Национальность - русский, вероисповедание - программист.


Помещено Xrobak 30-05-2005 в 18:58:

blacki
хм... и в какую же кодировку конвертить? УТФ-8 чтоли? Тогда получается мне весь контент сайта в УТФ-8 переганять прийдется?


Помещено blacki 31-05-2005 в 09:02:

Xrobak мне так и приходится делать... (правда это связанно в большей степени с поддержкой языков)

__________________
Национальность - русский, вероисповедание - программист.


Помещено Xrobak 31-05-2005 в 11:12:

эх... блина... будем думать тогда


Формат времени GMT. Текущее время 22:51.
Показаны 12 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.