Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сервер не понимает /i 
V
    Опции темы
AmraKimmerian
Дата 23.8.2009, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.4.2009

Репутация: нет
Всего: нет



На сервере выполнятется строка:
preg_match_all('/хлеб/i', $str, $sub);

Слово "хлеб" видит, слово "Хлеб" - нет.
В локале видит и то и другое слово.

Подскажите пожалуйста, в чем проблема? Очень не хочется писать '/[Хх]леб/'.
PM MAIL   Вверх
Wolf1994
Дата 23.8.2009, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 1
Всего: 29



Можно попробовать:
Код

preg_match_all('/хлеб/iu', $str, $sub);

PM MAIL WWW   Вверх
skyboy
Дата 23.8.2009, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



Wolf1994 намекает тебе, AmraKimmerian, что для данных в unicode надо указывать и ключ u
PM MAIL   Вверх
AmraKimmerian
Дата 23.8.2009, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.4.2009

Репутация: нет
Всего: нет



Попробовал. Вот что пишет компилятор и на локале и на сервере:
Compilation failed: invalid UTF-8 string at offset 1 in
PM MAIL   Вверх
skyboy
Дата 23.8.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 8
Всего: 260



хм. значит, кодировка не unicode.
вызов setlocale указывает используемую кодировку?
Цитата(AmraKimmerian @  23.8.2009,  12:29 Найти цитируемый пост)
В локале видит и то и другое слово.

что означает эта строка?
PM MAIL   Вверх
Ипатьев
Дата 23.8.2009, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 1
Всего: 37



Вот да. Я бы вместо намеков на совершенно неизвестные кодировки намекал на локаль. которая locale
Поскольку "на локале работает", которое localhost

PM MAIL   Вверх
AmraKimmerian
Дата 5.9.2009, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.4.2009

Репутация: нет
Всего: нет



to skyboy: А что такое setlocale? Как им пользоваться?
 
Цитата

что означает эта строка?

Это означает что на локально установленном на моем компьютере сервере Дэнвер с помощью /i регулярное выражение обнаруживает и слово "Хлеб", и слово "хлеб".

to Ипатьев:
Не понял что и кому вы хотели сказать.

Это сообщение отредактировал(а) AmraKimmerian - 5.9.2009, 11:05
PM MAIL   Вверх
Wolf1994
Дата 5.9.2009, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 1
Всего: 29



Цитата(AmraKimmerian @  5.9.2009,  10:57 Найти цитируемый пост)
А что такое setlocale? Как им пользоваться?


http://ru.php.net/manual/en/function.setlocale.php
PM MAIL WWW   Вверх
AmraKimmerian
Дата 5.9.2009, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.4.2009

Репутация: нет
Всего: нет



Wolf1994, спасибо, почитал. 

Т.е. вы с  Ипатьевым считаете что установка на сервере таких же параметров, как у меня на localhost (кодировки, языка) решит проблему? Но со строчными кириллическими символами проблем нет. Поэтому не понятно, какое setlocale имеет отношение к работоспособности модификатора /i в данном случае.

Из статьи про setlocale не понятно как им пользоваться. Ставить LC_CTYPE? А вторым параметром ставить "rf_RF" что ли? Но за что именно отвечает LC_CTYPE, кроме как за strtoupper()? Отвечает ли за /i? Как посмотреть какие настройки на сервере, нет же никакого getlocale?  Как то размыто написано в статье, хоть она и официальная наверное.
PM MAIL   Вверх
Wolf1994
Дата 5.9.2009, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 5.10.2004

Репутация: 1
Всего: 29



Код

//Для UTF-8
setlocale (LC_ALL, "ru_RU.UTF-8");

//Для CP-1251
setlocale (LC_ALL, "ru_RU.CP1251");

//В случае неопределённости
setlocale (LC_ALL, "ru_RU.UTF-8","ru_RU.CP1251");

//getlocale
setlocale (LC_ALL, "0");
//или
setlocale (LC_ALL, 0);
//- не уверен

PM MAIL WWW   Вверх
AmraKimmerian
Дата 11.9.2009, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.4.2009

Репутация: нет
Всего: нет



setlocale (LC_ALL, "ru_RU.CP1251"); помогло!
Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0788 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.