check($value) if Only numeric (0-9) (1-8 символов) or Only loweralpha(a-z) (1-6 символов) or Only alpha (A-Z) (1-6 символов) -> false else -> true ЗЫ Вообщем ложь, если только цифры 1-8 символов или только строчные 1-6 символов или только заглавные 1-6 симоволов, в остальных случаях правда...
PHP: function mda($s){ if(ereg('^([0-9]{1,8})$', $s)) return false; if(ereg('^([a-z]{1,6})$', $s)) return false; if(ereg('^([A-Z]{1,6})$', $s)) return false; return true; }
PHP: function check($str) { return preg_match('/^([0-9]{1,8}])$|^([a-z]{1,6})$|^([A-Z]{1,6})$/', $str); } Регулярки те же, но preg_match работает быстрее
Лучше так PHP: function check($str) { if(preg_match('/^({[0-9]{1,8}}|{[a-z]{1,6}}|{[A-Z]{1,6}})$/', $str);) { return false;} else {return true;} }
Во первых: Code: ({[0-9]{1,8}} несовпадение открывающих и закрывающих скобок (фигурные и круглые) Во вторых: Code: {[a-z]{1,6}} Неверное использование фигурных скобок В третьих: Code: if (preg_match(...) {return true;} else {return false;}) Лишнее условие, а условные переходы являются самой медленной частью в любой программе PS: зато идея "вынести за скобки" ^ и $ - как раз в тему+)
Ты прав,я прокололся. Но твоя функция работает неверно.Вот так работает правильно: PHP: function check($str) { return preg_match('/(^[0-9]{1,8}$)|(^[a-z]{1,6}$)|(^[A-Z]{1,6}$)/',$str)>0?false:true; }
Прочитай цитату из документации пхп в моем предыдущем посте, там ясно написано, что preg_match может возвращать только два значения: 0 или 1, а они в php равносильны false или true соответственно. Поэтому проверка Code: >0?false:true излишня
Нет, не излишняя ибо в случае не нахождения совпадений ппо твоей функции она выкинет 0, а эта фуннкция должна наоборот выкинуть 1.