В приведенном ниже коде я контролирую, является ли идентификатор в базе данных числом. Моя проблема заключается в следующем: регулярное выражение, в котором я проверяю идентификатор, всегда возвращает nummber 0 назад никогда 1 - даже когда идентификатор является числом.
Можете ли вы помочь мне решить эту проблему?
Это код с проблемой:
$muster = "|^[0-9]+$|";
if(preg_match($muster, $_POST["Anzahl"]) == 0 || preg_match($muster, $_POST["id"]) == 0 || $_POST["Anzahl"] < 1) {
die("<a href='javascript:history.back()'>Eingabe überprüfen</a>");
}
Я бы использовал фильтры PHPValidate
Его проще и удобнее:
<?php
$str = "100";
if (filter_var($str, FILTER_VALIDATE_INT)) {
echo("Variable is an integer");
} else {
echo("Variable is not an integer");
}
?>
Если filter_var(($str, FILTER_VALIDATE_INT))
успешно, он вернет 100 как целое число, иначе false
Btw есть много полезных фильтров: http://php.net/manual/de/filter.filters.validate.php
filter_input
будет более подходящим для$_POST
.