Регулярка для китайского языка

gadyonysh

Новичок
Регулярка для китайского языка

Проект на китайском.
Для создания поискового индекса и подобных задач необходимо оставить только китайские слова, то есть иероглифы.
\w проканает или нет? И можно ли указать диапазон (типа [a-z]) и каким образом?
Или же рыть в сторону мультибайта?
При поверхностном гугленьи ответа не нарыл. Может кто-нить быстро носом ткнуть, чтоб не терять время?
Отзовитесь китайцы и китаеведы.
 

WP

^_^
> Отзовитесь китайцы и китаеведы.
В юмор))))))
Превед китаёвед!

Диапазон задается в качестве номеров байт, про "буквы" они ничего не знают.
Установи нужную локаль.
 

gadyonysh

Новичок
Спасиба, чё аткликнулся, тиаретег! Как это я сразу про локаль не прочухал? Бландинок нарна.

Если кому-нито интересно: иероглиф, по заверениям китайцев - это 2 байта типа [\x80-\xff]. со всеми вытекающими и про буквы и правда ничё и слышать не хочет(я про них, кстати, ничё и не писал). То есть мне и правда придётся все preg'и на mb_ereg'и менять в коде.

ЗЫ: Серьёзно, спасибо откликнувшемуся.
Хотя время я потерял всё таки :)
 

fixxxer

К.О.
Партнер клуба
>>То есть мне и правда придётся все preg'и на mb_ereg'и менять в коде.

зачем?
/u
 

gadyonysh

Новичок
"Так как Linux использует только 16-битное подмножество UCS -- Unicode, то под Linux многобайтовые последовательности UTF-8 могут быть одно-, двух- или трехбайтными."
 

Altex

Новичок
Ключевое слово "могут быть"
Один и тот же символ не может быть представлен в UTF8 разным числом байт, так что /u тебе подойдет.
 

gadyonysh

Новичок
Блин, ребят, ну не канает u (конечно, если предварительно не сконвертить в utf).
 

Wicked

Новичок
я бы сначала сконвертировал в utf-8, а потом взял диапазоны кодпоинтов:
3400..4DBF; CJK Unified Ideographs Extension A
4E00..9FFF; CJK Unified Ideographs
F900..FAFF; CJK Compatibility Ideographs
FE30..FE4F; CJK Compatibility Forms
20000..2A6DF; CJK Unified Ideographs Extension B
2F800..2FA1F; CJK Compatibility Ideographs Supplement
(с) ftp://unicode.org/Public/5.0.0/ucd/Blocks.txt
... и из них составил бы регулярку.

С китайским не работал, так что могу ошибаться :) В частности, смысл, и, соответственно, значимость каждого блока при поиске нужно уточнять у знающих людей.

Если ты хочешь работать с другой кодировкой, то можно попробовать посмотреть правила отображения туда этих блоков.
 

gadyonysh

Новичок
В общем, если кому-то интересно, решил давно уже - как и предполагалось с помощью мультибайта. Есть одна особенность для регэкспов - используют онигуруму(http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt) Кодировка gb2312 (немного кривовато реализована поддержка в расширении mbstring) или по другому EUC-CN не особенно критична - для всех китайских кодировок принцип обработки одинаков.

Спасибо всем, кто откликнулся.
 
Сверху