Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Проверка на наличие английских символов


Автор: Sl@va 28.4.2007, 19:35
Здравствуйте !
Никто не подскажет, как используя регулырные выражения выявить, что например первое слово в переменной

Код

$str = "This site is good";


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

Автор: SelenIT 28.4.2007, 23:10
Английское слово - это, насколько я понимаю, последовательность латинских букв ([a-z]) числом не менее 1 шт. (квантификатор +) в любом регистре (модификатор i) между границами слова (\b). Раз речь идёт о первом слове - значит, начальной границей будет начало строки (^). Итого:
Код

if (preg_match('/^[a-z]+\b/i', $str)) echo 'Первое слово в строке - английское';


Если же нужно проверять на наличие именно осмысленных слов английского языка, то тут уже регулярки, имхо, бессильны. Ими можно разве что отрезать кусок строки до первого пробела или знака препинания, а дальше так или иначе придётся проверять по словарю. Как минимум, на наличие недопустимых для англ. языка буквосочетаний (как делают автопереключалки клавиатуры типа Punto Switcher)...

Автор: Sl@va 29.4.2007, 07:42
Нет, спасибо, это как раз то что нужно.
Еще раз спасибо !

Добавлено через 1 минуту и 34 секунды
Дело в том, что меня уже замучили спам-боты, которые все пишут на английском. Вот и родилась идея сделать такое ограничение, чтобы хоть как то от них избавиться. А то в день бывает до сотни сообщений, которые относятся к спаму.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)