Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
25.07.2004, 15:50
|
|||
---|---|---|---|
|
|||
Perl, локаль и RE |
|||
#18+
Привет! Почему из-за русской буквы, стоящей после .+? неправильно работает RE? Дома в ActiveState Perl все работает правильно, а на американском сервере неправильно. Вот пример: $_='Результат поиска: найдено сайтов'; if (m!^Результат поиска.+?сайтов!m) - не находит. А замена с на \xF1 не помогает: if (m!^Результат поиска.+?\xF1айтов!m) - не находит. Если разделить пробелом, то уже находит: if (m!^Результат поиска.+? сайтов!m) Вот еще работающий вариант разделителя (прямо анекдот): if (m!^Результат поиска.+?\s{0}сайтов[^<]+<b>(\d+)</b>!m) Локаль выставляю так: use POSIX qw(locale_h); use locale; setlocale(LC_CTYPE, "ru_RU.cp1251"); И она работает (проверял в RE, uc и lc). Почему 8-мибитный символ влияет на результат? В других местах RE русские буквы не мешают работе даже без установки локали. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2004, 10:38
|
|||
---|---|---|---|
Perl, локаль и RE |
|||
#18+
sergivanovПривет! Почему из-за русской буквы, стоящей после .+? неправильно работает RE? Дома в ActiveState Perl все работает правильно, а на американском сервере неправильно. Локаль выставляю так: use POSIX qw(locale_h); use locale; setlocale(LC_CTYPE, "ru_RU.cp1251"); И она работает (проверял в RE, uc и lc). Почему 8-мибитный символ влияет на результат? В других местах RE русские буквы не мешают работе даже без установки локали. а она действительно есть там такая ? результат который козвращает setlocale не пробовал проверять ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=23&tablet=1&tid=1479547]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
others: | 303ms |
total: | 428ms |
0 / 0 |