preg_match всегда возвращает 0

0

В приведенном ниже коде я контролирую, является ли идентификатор в базе данных числом. Моя проблема заключается в следующем: регулярное выражение, в котором я проверяю идентификатор, всегда возвращает 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>");
}
Теги:

1 ответ

0
Лучший ответ

Я бы использовал фильтры 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

  • 0
    здорово, это сработало! Потрясающие!!! Спасибо!
  • 1
    filter_input будет более подходящим для $_POST .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню