Php проверка суммы

У меня есть поле суммы, которое всегда будет положительным числом без десятичных знаков, таких как 10000, 1200, 10, 40 и т. д. Я использую приведенный ниже код, чтобы проверить действительную сумму.

if (!preg_match('/^[1-9][0-9]*$/', $_POST['amount'])) {
    $error[] = 'Invalid amount';
}

Это правильно. И нужно ли мне проверять количество пустых сообщений, используя пустую функцию php отдельно, или, как указано выше, preg_match также проверяет количество пустой строки.

Нет, вам не нужно проверять пустую строку. Ваше текущее регулярное выражение заставляет существовать одну цифру.

revo 25.09.2018 12:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
43
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Почему бы просто не использовать filter_var(), например:

if (!abs(filter_var($_POST['amount'], FILTER_VALIDATE_FLOAT))) {
    $error[] = 'Invalid amount';
}

Нужно ли использовать intval

Kuldeep Thakur 25.09.2018 11:51

он также отклоняет сумму, например 0010

Kuldeep Thakur 25.09.2018 11:52

@KuldeepThakur Вы правы, intval() может быть достаточно.

fabrik 25.09.2018 11:54

хорошо спасибо. А как насчет положительного числа с плавающей запятой, такого как 10,5

Kuldeep Thakur 25.09.2018 11:57

@KuldeepThakur см. Мой обновленный ответ.

fabrik 25.09.2018 12:01

@KuldeepThakur, вы заявили, что это будут положительные числа без десятичных знаков.

fabrik 25.09.2018 12:05

да, это будут положительные числа без десятичных знаков.

Kuldeep Thakur 25.09.2018 12:12

У меня есть другое поле с положительным числом, которое может содержать или не содержать десятичную точку? Что насчет этого дела?

Kuldeep Thakur 25.09.2018 12:13
FILTER_VALIDATE_FLOAT справится и с этим. Взгляните на ссылку, приведенную в моем ответе, вы можете использовать разные фильтры в соответствии с вашим вариантом использования.
fabrik 25.09.2018 12:15

хорошо спасибо. Также мне нужно проверить пустую переменную post

Kuldeep Thakur 25.09.2018 12:18

Я бы сравнил строку с самой собой при преобразовании в абсолютное значение int. Он более читабелен и удобен в обслуживании.

if ($_POST['amount'] !== abs(intval($_POST['amount']))) {
    $error[] = 'Invalid amount';
}

Другие вопросы по теме