Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: set_locale()
 
 автор: coloboc66   (04.06.2007 в 10:09)   письмо автору
 
 

Как этой функцией пользоваться? Хостер сказал мне, что нужно её использовать, а как использовать, говорить не хочет, урод...

   
 
 автор: kasmanaft   (04.06.2007 в 10:12)   письмо автору
 
   для: coloboc66   (04.06.2007 в 10:09)
 

setlocale(LC_ALL, 'имя_локали_которое_нужно_выпытать_у_хостера');

Или методом тыка пробуйте всякие ru_RU, RUS и тому подобные.

- - - - -
Посмотрите, что стоит у Вас на локальном и попробуйте поставить тоже самое на удаленном компуторе
echo setlocale(LC_ALL, NULL);

   
 
 автор: coloboc66   (04.06.2007 в 10:18)   письмо автору
 
   для: kasmanaft   (04.06.2007 в 10:12)
 

А в каком месте эту функцию нужно прописывать?

   
 
 автор: coloboc66   (04.06.2007 в 10:33)   письмо автору
 
   для: coloboc66   (04.06.2007 в 10:18)
 

На локальном хосте echo setlocale показывает Russian_Russia.1251 , на реальном - С Что это значит?

   
 
 автор: kasmanaft   (04.06.2007 в 17:24)   письмо автору
 
   для: coloboc66   (04.06.2007 в 10:33)
 

C - это локаль по умолчанию. Чего она дает/не дает точно сказать не могу.. В мануале где-то упоминается, что с А-умляутом (с точками наверху) некоторые строковые функции не работают. Это же, наверное, происходит и с другими "эксклюзивными" буквами. Думаю, к ним и кириллица относится.

   
 
 автор: coloboc66   (04.06.2007 в 18:01)   письмо автору
 
   для: kasmanaft   (04.06.2007 в 17:24)
 

В скрипте, принимающем сообщение от броузера, написал:
setlocale(LC_ALL, 'Russian_Russia.1251');
Ни фига не помогло, строка на кириллице как не резалась, так и не режется...

   
 
 автор: sim5   (04.06.2007 в 18:07)   письмо автору
 
   для: kasmanaft   (04.06.2007 в 17:24)
 

setlocale(LC_ALL, "ru_RU.CP1251");

   
 
 автор: coloboc66   (04.06.2007 в 18:16)   письмо автору
 
   для: sim5   (04.06.2007 в 18:07)
 

sim5 - ваш вариант подошел, кажется! Спасибо всем! А хостер, урод, вместо того, чтобы дать вот такую одну единственную строчку, даёт только ссылки на документацию на английском(!!!) языке.

   
 
 автор: sim5   (04.06.2007 в 18:22)   письмо автору
 
   для: coloboc66   (04.06.2007 в 18:16)
 

Это не мой вариант. А подобный глюк был у меня, и такая запись тоже не давала результата. Хотя хостер и не отзывался на вопросы, но я уродом )) его не называл. А потом все чудесным образом заработало - почему, загадка...

   
 
 автор: coloboc66   (04.06.2007 в 21:40)   письмо автору
 
   для: sim5   (04.06.2007 в 18:22)
 

А я уродом его называю, потому что плачу ему деньги. А деньги нужно отрабатывать, знаете-ли, они даром не даются.

   
 
 автор: Trianon   (04.06.2007 в 22:00)   письмо автору
 
   для: coloboc66   (04.06.2007 в 21:40)
 

После того, как Вы его так назвали - он отработал деньги?

   
 
 автор: coloboc66   (04.06.2007 в 22:04)   письмо автору
 
   для: Trianon   (04.06.2007 в 22:00)
 

Пока нет. Однако не забывайте закон бизнеса: "Клиент ВСЕГДА прав." И еще: понимаете -ли, у человека есть нервы, и они бывает, ослабевают... После тупых диалогов.

   
 
 автор: sim5   (05.06.2007 в 04:29)   письмо автору
 
   для: coloboc66   (04.06.2007 в 22:04)
 

Проблема setlocale плавно перетекает в проблему образа хостера.)
Мне бы очень хотелось знать, почему вдруг на хосте стала работать эта установка локали, а также способ предложенный Хеопсом, и это при том, что различий в phpinfo() до и после не обнаружил, как и в setlocale(). Будь хостер трижды уродом (это его проблемы), но я бы был безмерно благодарен ему, если бы он помог узнать мне это, ведь это важно. ТХ самого хостера меня не интересуют.))

   
 
 автор: coloboc66   (05.06.2007 в 09:12)   письмо автору
 
   для: sim5   (05.06.2007 в 04:29)
 

А вы попробуйте спросить у хостера...

   
 
 автор: sim5   (05.06.2007 в 10:24)   письмо автору
 
   для: coloboc66   (05.06.2007 в 09:12)
 

>А вы попробуйте спросить у хостера...

Так молчит, без писка...) Да и бог с ним, заработала и на том спасибо. Зачем нервы тратить, оно вам надо? Лучше уж "добить" хостера вежливо. Ну а если молчит, зачем излишний раз заводить себя. Мне например нравится такое - "Жизнь коротка, потерпи чуть-чуть!".

   
 
 автор: Trianon   (05.06.2007 в 09:56)   письмо автору
 
   для: sim5   (05.06.2007 в 04:29)
 

на самом деле тут палка о двух концах.
Есть информация (в том числе и в этой проблеме) которая описывает принципы. Что такое локаль, что она определяет, как она задается, на работу каких функций влияет и т.д.
И есть информация, причастная сугубо конкретному серверу. Имена локалей, соответствующие имеющимся на сервере кодовым страницам.
Первое представляет ценные данные, которые спрашивать у хостера безусловно можно, только это не самый эффективный способ получить исчерпывающее и развернутое описание.
Второе никто кроме хостера не знает, однако его хостер обязан предоставить по первому писку клиентра. А лучше бы вообще без писка. В местном FAQ, например.

   
 
 автор: coloboc66   (05.06.2007 в 10:16)   письмо автору
 
   для: Trianon   (05.06.2007 в 09:56)
 

Так что ж это получается? Значит, я в ПРИНЦИПЕ не могу написать скрипт на РНР, который безпроблемно работал бы на любом хостинге, т.е. был бы универсальным?!

   
 
 автор: glsv (Дизайнер)   (05.06.2007 в 10:19)   письмо автору
 
   для: coloboc66   (05.06.2007 в 10:16)
 

>Значит, я в ПРИНЦИПЕ не могу написать скрипт на РНР
В ПРИНЦИПЕ можете. Например, не используя локале-зависимые функции, а написав их аналоги.

   
 
 автор: coloboc66   (05.06.2007 в 10:27)   письмо автору
 
   для: glsv (Дизайнер)   (05.06.2007 в 10:19)
 

Что-то совсем не могу допереть, как написать аналог вот такой функции?
setlocale(LC_ALL, "ru_RU.CP1251");

   
 
 автор: glsv (Дизайнер)   (05.06.2007 в 10:33)   письмо автору
 
   для: coloboc66   (05.06.2007 в 10:27)
 

Аналог такой писать не надо.
Пример: функция смены регистра символов strlolower(). Вместо нее можно использовать конструкцию:

<?
strtr
($string,"АБВГД","абвгд");
?>

   
 
 автор: Trianon   (05.06.2007 в 10:33)   письмо автору
 
   для: glsv (Дизайнер)   (05.06.2007 в 10:19)
 

>>Значит, я в ПРИНЦИПЕ не могу написать скрипт на РНР
>В ПРИНЦИПЕ можете. Например, не используя локале-зависимые функции, а написав их аналоги.

Но при этом почти наверняка быстродействие соответствующего участка кода просядет на порядок.

Есть еще компромиссный вариант - не использовать не сами функции, а их локале-зависимые вызовы. Это достигается невсегда, но во многих случаях - вполне приемлемый компромисс.
К примеру: preg_match("/[0-9а-яё]+/i", $line, $res) и preg_match("/[0-9а-яА-ЯёЁ]+/", $line, $res) в при 1251-кодировке исходного текста и проверяемой строки - эквивалентны. Но первый вызов зависит от локали, а второй - нет.

   
 
 автор: Disable   (05.06.2007 в 12:13)   письмо автору
 
   для: coloboc66   (04.06.2007 в 10:09)
 

setlocale(LC_ALL, '');
В этом случаи есть шанс, что php может установить локаль самостоятельно..
/это вроде в Котерове написано было.

   
 
 автор: coloboc66   (05.06.2007 в 17:15)   письмо автору
 
   для: Disable   (05.06.2007 в 12:13)
 

Не, у меня этот вариант не срабатывает.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования