RuWeb.net Forum

Как такое может быть?
Comandante - 1.3.2007 в 15:41

Есть простенький скриптик:
<?
$text="бла-бла текст бла-бла";
if (eregi("Текст","$text")) echo "не учитывает регистр";
else echo "Error! Учитывает регистр";
?>

На локале работает как и должен, в браузер пишет "не учитывает регистр". А вот на сервере получаю "Error! Учитывает регистр". Причем попробовал на трех разных серверах - везде одно и то же.
eregi - совпадение с регулярным выражением без учёта регистра символов
Почему так происходит? Я чего-то не понимаю?

[Изменено 1.3.2007 от Comandante]


kpv - 1.3.2007 в 16:32

если Вы сравниваете русский текст, может быть всё дело в
http://ru2.php.net/manual/en/function.setlocale.php


Comandante - 1.3.2007 в 17:51

Да, текст только на русском.
Первый раз сталкиваюсь с setlocale(). Подскажите, что нужно добавить в код, чтобы текст сравнивался корректно?


kpv - 2.3.2007 в 12:59

каким образом сервер про кодировку узнает?

http://ru2.php.net/manual/en/function.strtolower.php
http://ru2.php.net/manual/en/function.strtoupper.php

локаль необходимо установить ту, которая стоит на сервере для того языка, с которым работаете.
например:
$ locale -a | grep "RU"
ru_RU.CP1251
ru_RU.CP866
ru_RU.ISO8859-5
ru_RU.KOI8-R
ru_RU.UTF-8


Comandante - 2.3.2007 в 13:17

Пробую вставлять перед eregi() строку:
setlocale (LC_ALL, 'ru_RU.CP1251');
- ничего не выходит, что не так?

PS. echo setlocale(LC_ALL, NULL) на сервере дает "C", на локале "Russian_Russia.1251"

[Изменено 2.3.2007 от Comandante]


kpv - 2.3.2007 в 13:38

давайте начнём с первого пункта, тогда
http://forum.ruweb.net/viewthread.php?tid=1821
а также где Ваш скрипт лежит?


Comandante - 2.3.2007 в 14:17

Сорри, на этом хостинге это работает, а вот на другом этот же скрипт сравнивает текст с учетом регистра. Но это уже другой разговор, спасибо за помощь!


Comandante - 2.3.2007 в 14:22

на другом хостинге решил проблему вставив
setlocale(LC_ALL, 'ru_RU.KOI8-R');

хотя echo setlocale(LC_ALL, NULL); и там, и тут выводило "C"

[Изменено 2.3.2007 от Comandante]