в очередной раз ereg и setlocale()

korvin0

моська
в очередной раз ereg и setlocale()

Искал в форумах, но что-то ничего не нашел, что бы у меня заработало.
PHP:
<?php
setlocale(LC_ALL,'ru','ru_SU');
if (ereg("^[[:alnum:]]*$","хёех")) echo "OK!"; else echo "Non-ok!";
?>
Данный пример упорно выдает "Non-ok". Пробовал под Win32 и Linux, разные локали ставил, но все одно - не работает!
Какую нужно локаль ставить и вообще, где мне узнать какие есть названия локалей (хотелось бы, чтобы работало на разных хостингах на различных платформах, а не на одной-двух каких-нибудь)?
 

neko

tеam neko
встречный вопрос немного не в тему

нафига этот posix?

preg_match() и \w
чем тебя не устраивает?
 

korvin0

моська
1) кириллица пашет без настроек локали?
2) preg_match - "тяжелая артиллерия", в моем случае ее вряд ли целесообразно пускать, хотя...
 

neko

tеam neko
1) незнаю

но то как ты ставишь локаль к регеэкспам afaik не относится
прочти ман

2) здрасте, они быстрее посиксовских
 

tony2001

TeaM PHPClub
neko
>но то как ты ставишь локаль к регеэкспам afaik не относится
относится.
LC_CTYPE к ним относится, а LC_ALL его включает в себя.

korvin0
setlocale - это тебя устроит?
 

korvin0

моська
Это был последний раз, когда я использовал POSIX.
PCRE rulezzz! Все пашет и почти всегда намного быстрее, как уверяет Бородин, чем ereg'и. Спасибо, neko!

-~{}~ 20.05.04 23:26:

tony2001
Я все локали перепробовал - не работает!
 

tony2001

TeaM PHPClub
не те пробовал, значит.
список русских локалей:
locale -a | grep ru
 

neko

tеam neko
секретная инфа о скорости - из мана

а кто такой Бородин?
 

korvin0

моська
Пробовал:
ru
russian
ru_RU
ru_RU.KOI8-R
ru_RU.CP1251
ru_UA
ru_RU.koi8r
ru_SU
ru_SU.KOI8-R
ru_SU.CP1251
и ничего!!! Странные они, эти локали :)

-~{}~ 20.05.04 23:37:

tony2001
Доступа к шелу нет
neko
бородин - php.spb.ru : зайди и узнаешь
 

tony2001

TeaM PHPClub
ну вот выбери ru_RU.KOI8-R или ru_RU.CP1251, если у тебя соотв-но кои или вин.
на strtolower() можешь попробовать - с неправильной локалью она работать не будет.
 

tony2001

TeaM PHPClub
а текст в какой кодировке?

-~{}~ 20.05.04 23:41:

>Доступа к шелу нет
[m]system[/m]
 

korvin0

моська
очень хорошо: strtolower все верно выполняет (меняет регистр), но почему тогда [[:alnum:]] в ereg'ах не пашет?

-~{}~ 20.05.04 23:44:

текст в win1251

-~{}~ 20.05.04 23:46:

Ну вот, теперь на сервере ru_RU.CP1251, но все равно не работает
 

tony2001

TeaM PHPClub
>но почему тогда [[:alnum:]] в ereg'ах не пашет?
Код:
`alnum'
     letters and digits
ereg("^[[:alnum:]]*$","хёех") - это проверка на НЕ буквы и НЕ цифры.
ты уверен, что "хёех" - это НЕ буквы и НЕ цифры?
 

korvin0

моська
http://phpclub.ru/talk/showthread.php?s=&threadid=20000 - то, что сказали там, верно? А с setlocale никак?

-~{}~ 20.05.04 23:56:

ereg("^[[:alnum:]]*$","хёех") - это проверка на НЕ буквы и НЕ цифры.
Да? А так это что по-твоему?:
PHP:
ereg("[^[:alnum:]]*$","хёех")
Кто-то глючит...
 

tony2001

TeaM PHPClub
возможно.
я никогда полностью не понимал ereg*..
однако, ты явно что-то не то делаешь, имхо.
 

korvin0

моська
Да я это и сам понимаю.
ereg("[^[:alnum:]]*$","hehe") замечательно работает! Значит, все-таки в локале дело?
 

korvin0

моська
Проверять, присутствуют ли в строке ТОЛЬКО буквы и цифры или еще какие-нибудь символы.

-~{}~ 21.05.04 00:16:

Ладно, иду спать (это чтоб вы до утра месаг от меня не ждали). С утра гляну, что придумали полуночники :)
 
Сверху