|
|
|
| Подскажите как правельно составить шаблон для проверки введённых чисел, нужно чтобы предел был от трёх цифр до десяти, и должны содержаться именно только цифры
да ещё так чтобы ноль небыл первым в начале, причём в любом количестве, это можно сделать? | |
|
|
|
|
|
|
|
для: Кот Васька
(30.11.2005 в 19:43)
| | | |
|
|
|
|
|
|
|
для: Кот Васька
(30.11.2005 в 19:43)
| | Я бы предложил такой вариант (не идеальный, но работоспособный)
<?
/*
Проверяем чтобы юзер ввел ($subj) только цифры от 3 до 10
*/
$subj = "00098765";
if (preg_match("|^\d{3,10}$|", $subj, $matches))
{
$subj1 = $matches[0] * 1;
($subj1 == 0) ? print "Ошибка при вводе данных" : print $subj1;
}
else
print "Ошибка при вводе данных!";
/*
Если юзер ввел что-то начиная с 0, (например 00098765), то любое арифметическое действие (в данном случае умножение на 1) эти нули убирает.
*/
?>
|
| |
|
|
|
|
|
|
|
для: Алекс
(05.12.2005 в 02:18)
| | тогда уж:
<?php
/*
Проверяем чтобы юзер ввел ($subj) только цифры от 3 до 10
*/
$subj = "000098765";
if (preg_match("|^\d{3,10}$|", $subj, $matches))
{
print ((int)$matches[0] == 0) ? "Ошибка при вводе данных" : (int)$matches[0];
}
else
print "Ошибка при вводе данных!";
/*
Если юзер ввел что-то начиная с 0, (например 00098765), то любое арифметическое действие (в данном случае умножение на 1) эти нули убирает.
*/
?>
|
+ мой вариант без регулярных выражений:
<?php
$num = "0770098765";
if (strpos($num,'.') || !is_numeric($num) || strlen($num) > 10 || strlen($num) < 3) {
echo "Ошибка при вводе данных!";
} else {
echo (int)$num;
}
?>
|
Быстрее мой вариант:
Регулярные выражения: 0.0074868202209473
Строковые функции: 0.0024511814117432 | |
|
|
|