Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Нужна функция проверки строковой переменной на Php |

08.12.2007, 01:38
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
Нужна функция проверки строковой переменной на Php
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 симоволов, в остальных случаях правда...
|
|
|

08.12.2007, 01:50
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
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;
}
|
|
|

08.12.2007, 23:44
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
PHP код:
function check($str)
{
return preg_match('/^([0-9]{1,8}])$|^([a-z]{1,6})$|^([A-Z]{1,6})$/', $str);
}
Регулярки те же, но preg_match работает быстрее
|
|
|

08.12.2007, 23:49
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 595
Провел на форуме: 1845062
Репутация:
1079
|
|
Сообщение от Helios
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;}
}
Последний раз редактировалось Macro; 08.12.2007 в 23:53..
|
|
|

09.12.2007, 00:38
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
Сообщение от Macro
Лучше так
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;}
}
Во первых:
несовпадение открывающих и закрывающих скобок (фигурные и круглые)
Во вторых:
Неверное использование фигурных скобок
Сообщение от Спецификации PCRE
{
start min/max quantifier
}
end min/max quantifier
В третьих:
Код:
if (preg_match(...) {return true;} else {return false;})
Лишнее условие, а условные переходы являются самой медленной частью в любой программе
Сообщение от php documentation
preg_match() returns the number of times pattern matches. That will be either 0 times (no match) or 1 time because preg_match() will stop searching after the first match.
PS: зато идея "вынести за скобки" ^ и $ - как раз в тему+)
|
|
|

09.12.2007, 01:38
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 595
Провел на форуме: 1845062
Репутация:
1079
|
|
Ты прав,я прокололся. Но твоя функция работает неверно.Вот так работает правильно:
PHP код:
function check($str)
{
return preg_match('/(^[0-9]{1,8}$)|(^[a-z]{1,6}$)|(^[A-Z]{1,6}$)/',$str)>0?false:true;
}
|
|
|

09.12.2007, 01:49
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
Прочитай цитату из документации пхп в моем предыдущем посте, там ясно написано, что preg_match может возвращать только два значения: 0 или 1, а они в php равносильны false или true соответственно.
Поэтому проверка
излишня
|
|
|

09.12.2007, 10:50
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 595
Провел на форуме: 1845062
Репутация:
1079
|
|
Сообщение от Helios
Прочитай цитату из документации пхп в моем предыдущем посте, там ясно написано, что preg_match может возвращать только два значения: 0 или 1, а они в php равносильны false или true соответственно.
Поэтому проверка
излишня
Нет, не излишняя ибо в случае не нахождения совпадений ппо твоей функции она выкинет 0, а эта фуннкция должна наоборот выкинуть 1.
|
|
|

09.12.2007, 13:11
|
|
Banned
Регистрация: 22.08.2006
Сообщений: 608
Провел на форуме: 6144796
Репутация:
1095
|
|
Сообщение от Macro
Нет, не излишняя ибо в случае не нахождения совпадений ппо твоей функции она выкинет 0, а эта фуннкция должна наоборот выкинуть 1.
тогда все равно можно обойтись без проверки.. )
return !preg_match('/(^[0-9]{1,8}$)|(^[a-z]{1,6}$)|(^[A-Z]{1,6}$)/',$str);
|
|
|

09.12.2007, 14:54
|
|
Pagan Heart
Регистрация: 12.08.2004
Сообщений: 3,791
Провел на форуме: 6490435
Репутация:
2290
|
|
if(preg_match('/^({[0-9]{1,8}}|{[a-z]{1,6}}|{[A-Z]{1,6}})$/', $str)
{ return false;}
else {return true;}
ппц ))))
а ?: или приведение типов (bool) заюзать? )
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|