Странен проблем с preg_match?

FestarBG

Registered
Здравейте,
трябва ми функция, която валидира текст, въведен от потребители.За да не се притеснявам за "<> и т.н. лоши символи прекарвам текста през следната проверка:
preg_match("|[a-zA-Zа-яА-Я0-9:space:]{3,64}|", $text)

Проблема е, че ако $text е <asdfg> или нещо с кавички, preg_match връща 1.

:roll:
 
Такам. Значи първо тия ограничители | за първи път ги виждам. Може и да ги има, но не съм сигурен. Второ не се ползва :space: , а \s .
И третото, което на теб ти е проблема, е че не си задал котви за началото и края на стринтга. В случая това намира <asdfg> и за това е правилен за него.

preg_match("/^[a-zA-Zа-яА-Я0-9\s]{3,64}$/", $text)
 
За ограничители може да ползваш каквото пожелаеш, но ако го ползваш в регулярният израз, трябва да го ескейпнеш.
Второ, аз бих ти препоръчал да ползва вариант, дали низа съдържа всичко ОСВЕН посочените от теб неща:
preg_match("/[^a-zа-я0-9\-]/", $string){
echo 'Невалиден символ';
}
 

Back
Горе