1. PHP / Говнокод #19636

    +3

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    /**
         * Validate natural number (0,1,2,3,...)
         *
         * @param string $value number
         * @return string
         */
        public function natural($value)
        {
            $response = '';
            if (!preg_match('/^[0-9]+$/', $value)) {
                $response = $this->lang->get_str('system_invalid_neutral');
            }
            return $response;
        }
    
        /**
         * Validate natural number, but not a zero (1,2,3,...)
         *
         * @param string $value number
         * @return string
         */
        public function natural_no_zero($value)
        {
            $response = '';
            if (!preg_match('/^[0-9]+$/', $value)) {
                $response = $this->lang->get_str('system_invalid_neutral_no_zero');
            }
    
            if ($value == 0) {
                $response = $this->lang->get_str('system_invalid_neutral_no_zero');
            }
            return $response;
        }

    Запостил: b2012993, 15 Марта 2016

    Комментарии (13) RSS

    • Поможем автору:
      public static function toNatural($val)
      {
          return (is_numeric($val) && (int)$val >= 0) ? (int)$val : false;
      }
      public static function toRealNatural($val)
      {
          return self::toNatural($val) > 0 ? self::toNatural($val) : false;
      }
      Ответить
      • Автор поможет вам:

        public static function toNatural($val)
        {
        return (ctype_digit($val)) ? (int)$val : false;
        }
        public static function toRealNatural($val)
        {
        return self::toNatural($val) > 0 ? self::toNatural($val) : false;
        }
        Ответить
      • Настоящий натурал
        Ответить
    • Автор поможет вам:

      public static function toNatural($val)
      {
      return (ctype_digit($val)) ? (int)$val : false;
      }
      public static function toRealNatural($val)
      {
      return self::toNatural($val) > 0 ? self::toNatural($val) : false;
      }
      Ответить
      • Автор вам не поможет:

        filter_var($value, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_OCTAL[, $min[, $max]]);
        Ответить
    • public function natural($value)
      {
      $response = '';
      if ($value < 0 or !is_int($value)) {
      $response = $this->lang->get_str('system_invalid_natural');
      }
      return $response;
      }
      Ответить
      • гавно
        Ответить
        • аргументируй
          Ответить
          • твой код не будет работать если
            $value = "12";

            is_int - проверяет на int, a $value пришел строкой, но это число.

            is_numeric - определяет число или нет, не смотря на тип.
            Ответить
    • Все выше перечисленные говнокоды не работают на больших числах. А код автора работает.
      Ответить
      • ага, если выйдет за диапазон int.
        у тебя такое часто бывает?
        Ответить
        • > если выйдет за диапазон int
          К примеру, размер любого фильма в нормальном качестве :) Мы же не знаем, что за числа тут пытаются валидировать.
          Ответить

    Добавить комментарий