Жесткая проверка!!! Вопрос.

Dimonets

Guest
Жесткая проверка!!! Вопрос.

Народ подскажите как проверить переменную $description на ее содержимое?

Те меня интересует следующее:
нужно чтобы в переменной были только буквы латинского алфавита, все знаки препинания и специальные символы.

Те это должно быть какое-то регулярное выражение. Но я в них вообще не разбираюсь. У меня есть вот такой код:

if (!ereg("^[a-zA-Z0-9_]",$description)) $error_found = true;

Но здесь только проверяются все символы латинского алфавита, цифры и значек подчеркивания.

А мне нужно еще включить туда следующие символы:
~`!@#$%^&*()_+|`-=\/.,<>";:' а также: пробел и табуляцию

Может кто-то делал подобное и может поделиться кодом?

Спасибо.
 

nagash

Guest
ну добавь все эти символы в регулярку да и делов то...
перед некоторыми символами надо будет поставить "\"
 

Yurik

/dev/null
Ну так допиши в диапазон [[:alnum:]_] все названные знаки

Кроме того эти:
^.[$()|*+?{\

должны экранироваться спереди слешем.
 

Demiurg

Guest
preg_match('|^[a-zA-Z0-9_~`!@#$%^&*()_+\\|=\\\\/.,<>";:\'-]*$|' ... );
 

Dimonets

Guest
Увы не работает!

Спасибо за попытку помочь, но ни один из ваших кодов не работает! :-(

Я ведь вообще не понимаю регулярные выражения, те если где-то у вас в коде есть лишний слеш - то я не смогу определить, что это именно из-за него ошибка... :-(

Не могли бы вы написать однозначно точно работающий код? Спасибо.

PS. Я забыл также указать, что необходимы символы: табуляция, пробел, символ 13, символ 10.
 

Dimonets

Guest
Небольшое пояснение

Скажу для чего это мне нужно:
у меня есть textarea где люди могут писать текст, так вот - нужно чтобы они могли туда писать только на английском языке, и естественно могли добавить все символы, что есть на клавиатуре. И иногда даже тех, что нет, например такие как: длинное тире, кавычки (&laquo; &raquo;) и тд. Может я что-то забыл из встречающихся символов, но если у вас есть код выполняющий подобную проверку, пришлите пожалуйста.

Спасибо.
 

Dimonets

Guest
Нужна оценка моего решения

Я решил отказаться от длинного тире и всяких там навернутых кавычек и сделал следующий код:

if (preg_match("/[^(\x01-\x7F)]/",$phrase)) $error_result = true;

те включил все символы до 127

Интересует ваш совет, будет ли это правильным для подобной проверки на английский язык?

Спасибо.
 

Dimonets

Guest
хм а это будет включать и знаки препинания тоже?

что такое *?

Мне же необходимо переносы строк оставить тоже. и тд.
 

Demiurg

Guest
если тебе нужны только соимволы от 1 до 127 то ты почти правильно написал выражение с небольшими поправками:
if (preg_match('/[^\\x01-\\x7F]/',$phrase)) $error_result = true;
 
Сверху