Модераторы: ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверить присутствие кириллицы в тексте? 
:(
    Опции темы
ilin
Дата 28.4.2011, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 28.4.2011

Репутация: нет
Всего: нет



На сайте нашего музея работает perl-скрипт гостевой книги. Скрипт чужой, написан сто лет назад. К моему стыду, сам до сих пор не освоил regexp.
Для блокировки иностранного спама хочу добавить проверку наподобие:
Код

&fatal_error("Здесь точно нет ни слова по-русски...\n") if ($text не содержит кириллицы);

PM MAIL   Вверх
KSURi
Дата 28.4.2011, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: нет
Всего: 27



Код

/\p{Cyrillic}/

при условии, что строка - utf8.


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
Pfailed
Дата 28.4.2011, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 6
Всего: 39



Код

use POSIX;
use locale;

POSIX::setlocale(POSIX::LC_ALL, 'ru_RU.KOI8-R');
$str =~ /[а-яё]/i
    or die 'No Cyrillic found';


Ну а подобное для других кодировок должно работать. В примере koi8-r.

Добавлено через 11 минут и 51 секунду
Так оказывается тоже можно
Код

use encoding 'koi8-r';

$str =~ /\p{Cyrillic}/
    or die 'No Cyrillic found';



--------------------
PM MAIL   Вверх
Pfailed
Дата 28.4.2011, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 6
Всего: 39



А нет, так можно только для строк определённых внутри исходного кода  smile 


--------------------
PM MAIL   Вверх
KSURi
Дата 29.4.2011, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 887
Регистрация: 8.6.2006
Где: Russia

Репутация: нет
Всего: 27



Цитата(Pfailed @ 28.4.2011,  17:52)
А нет, так можно только для строк определённых внутри исходного кода  smile

Так можно для любого юникода


--------------------
Died at Life.pl line 21
PM Jabber   Вверх
Pfailed
Дата 29.4.2011, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 19.7.2009

Репутация: 6
Всего: 39



Цитата(KSURi @  29.4.2011,  01:30 Найти цитируемый пост)
Так можно для любого юникода

Нет сомнений, только у этой строки должен быть поднят utf8 флаг. А моя фраза относилась к моему последнему примеру, там про юникод речи не идет.


--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Регулярные выражения | Следующая тема »


 




[ Время генерации скрипта: 0.0587 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.