- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева

Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Доброго дня всем и удачного года.
Нарисовалась простая задачка - имеем произвольную переменную $var, нужно определить является ли она натуральным числом или нет. Натуральные числа это: 0,1,2,3,4,5, и так далее до бесконечности. Все, что не входит в этот ряд, должно браковаться.
Погуглил на этот счет, есть несколько вариантов:
Но на практике они не совсем подходят, так как пропускают такие случаи: 0123, или 0007777, т.е. с нулем (нулями) впереди, а ноль не должен пропускаться.
Примеры, как должно отрабатывать выражение ("ok" или "брак"):
$var=123 ok
$var=12340 ok
$var=0 ok
$var=-0 брак
$var=00 брак
$var=00123 брак
$var=123z брак
$var=123бла-бла-бла-№;%+#@*456789 брак
$var=-123 брак
$var=abc брак
$var=абв брак
Кто-нибудь может подсобить, чем дополнить те примеры, моих знаний регулярных выражений, увы, не хватает.
/^[1-9][0-9]*$/
или
is_numeric($var) AND strcmp($var, intval($var)) === 0
siv1987, вашу проверку нолик не пройдёт, а все остальные числа - пройдут.
Вообще, для этих целей есть родная функция is_int (только отрицательные числа надо отсекать).
И $var=00123 - с точки зрения php это 83, что вам покажет echo 00123;
siv1987, вашу проверку нолик не пройдёт, а все остальные числа - пройдут.
/^0|[1-9][0-9]*$/
Вообще, для этих целей есть родная функция is_int
var_dump( is_int((string) '123') ); //false
/^0|[1-9][0-9]*$/
var_dump( is_int((string) '123') ); //false
Логично, строка же. Хотя у ТСа наверное тоже все переменные по сути строки, берущиеся из каких-то инпутов.
/^[1-9][0-9]*$/
бракует 0.
is_numeric($var) AND strcmp($var, intval($var)) === 0
пропускает отрицательные числа, типа $var="-123";
/^0|[1-9][0-9]*$/
пропускает 0123, пропускает -123
пропускает 0123, пропускает -123
/^(0|[1-9][0-9]*)$/
---------- Добавлено 01.01.2015 в 22:21 ----------
пропускает отрицательные числа, типа $var="-123";
AND отрицательное_число > 0 ?
if (ctype_digit($var)) {
echo 'норм число';
}
if ((string) (int) $var === $var) ...