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

Форум Регулярные Выражения

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

 

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

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

тема: кириллица в рег. выражении
 
 автор: Евген   (25.02.2010 в 12:45)   письмо автору
 
 

У меня проблема с кириллицей в рег. выражении, а именно
если пишу, например, ereg([a-Zа-Я]), то латиницу скрипт php видит и обрабатывает, а кириллицу игнорирует.
Есть проблема и с обработкой кирилличных строк строковыми функциями php, например, функция str_word_count() не хочет считает (результат нулевой) количество слов в переменной, содержащей кирилличный текст, а с латиницей работает нормально.
Подскажите, возможно, причина этой проблемы в настройках bash и suse, с которыми я работаю.

  Ответить  
 
 автор: .heed   (25.02.2010 в 16:33)
 
   для: Евген   (25.02.2010 в 12:45)
 

а-Я это не правильная последовательность, так-же как a-Z
Для выражений буквы это только байты, если например кодировка в которой редактируете скрипт cp1251
, то A-Z идёт последовательность \x41-\x5a
, затем идут символы [\]^_`
, затем a-z \x61-\x7a
Русский алфавит чуть по другому
, \xc0-\xFF символы обоих регистров А-я
, исключая два, Ёё, \xa9\xb8 кажется.

Если utf-8 текст проверяете скриптом в utf-8 кодировке, в preg_функциях и выражениях нужен просто модификатор /u, Насчёт ereg не скажу.
В utf-8 например буква Я это два байта \xd0\xaf

, а так смотрите доки к setlocale, если например не работают регистронезависимые функции и функции преобразования регистра символов
string setlocale( mixed category, string locale [, string ...] )
string setlocale( mixed category, array locale )
category - строка или константа, задающая категорию функций, на которые будет влиять установка локали:
. LC_ALL - все функции
. LC_COLLATE - функции сравнения строк, см. strcoll()
. LC_CTYPE - функции преобразования строк, например strtoupper()
. LC_MONETARY - функция localeconv()
. LC_NUMERIC - задает символ десятичной точки (см. также localeconv())
. LC_TIME - форматирование дат функцией strftime()
Замечание: Начиная с 4.2.0, передача category в виде строки не поддерживается, рекомендуется использовать перечисленные константы. Передача этих констант как строк (в кавычках) вызовет вывод предупреждения.
Если в качестве locale передана пустая строка "", имена локалей будут взяты из соответствующих переменных окружения или переменной с именем "LANG".
Если в качестве locale передан NULL или "0", локаль изменена не будет, а будет возвращено текущее значение.

, плюс mbstring-функции если кодировка utf-8

  Ответить  
 
 автор: vadimka   (27.02.2010 в 17:09)   письмо автору
 
   для: Евген   (25.02.2010 в 12:45)
 

если utf8 - то строчные функции не работают с кириллицей, кроме perl-регулярок. Скачайте библиотеку mbstring

  Ответить  
Rambler's Top100
вверх

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