У меня есть поле суммы, которое всегда будет положительным числом без десятичных знаков, таких как 10000, 1200, 10, 40 и т. д. Я использую приведенный ниже код, чтобы проверить действительную сумму.
if (!preg_match('/^[1-9][0-9]*$/', $_POST['amount'])) {
$error[] = 'Invalid amount';
}
Это правильно. И нужно ли мне проверять количество пустых сообщений, используя пустую функцию php отдельно, или, как указано выше, preg_match также проверяет количество пустой строки.






Почему бы просто не использовать filter_var(), например:
if (!abs(filter_var($_POST['amount'], FILTER_VALIDATE_FLOAT))) {
$error[] = 'Invalid amount';
}
Нужно ли использовать intval
он также отклоняет сумму, например 0010
@KuldeepThakur Вы правы, intval() может быть достаточно.
хорошо спасибо. А как насчет положительного числа с плавающей запятой, такого как 10,5
@KuldeepThakur см. Мой обновленный ответ.
@KuldeepThakur, вы заявили, что это будут положительные числа без десятичных знаков.
да, это будут положительные числа без десятичных знаков.
У меня есть другое поле с положительным числом, которое может содержать или не содержать десятичную точку? Что насчет этого дела?
FILTER_VALIDATE_FLOAT справится и с этим. Взгляните на ссылку, приведенную в моем ответе, вы можете использовать разные фильтры в соответствии с вашим вариантом использования.
хорошо спасибо. Также мне нужно проверить пустую переменную post
Я бы сравнил строку с самой собой при преобразовании в абсолютное значение int. Он более читабелен и удобен в обслуживании.
if ($_POST['amount'] !== abs(intval($_POST['amount']))) {
$error[] = 'Invalid amount';
}
Нет, вам не нужно проверять пустую строку. Ваше текущее регулярное выражение заставляет существовать одну цифру.