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

    +149.7

    1. 1
    2. 2
    3. 3
    4. 4
    function iz_cifr($a)
    {
      return ((strlen(addcslashes($a, '0123456789')) == 2 * strlen($a)) && ($a != ''));
    }

    Индусская проверка на то, состоит ли строка только из цифр

    Запостил: guest, 03 Августа 2009

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

    • я кончил и закурил 0_о
      Ответить
    • Димко:
      Это ж надо было так извратиться! я бы до такого не додумался :)
      Ответить
    • daemon_master:
      мне вот интересно как это вообще работает:) и что курил аффтар перед тем, как такое придумать! )
      Ответить
    • К.О.:
      addcslashes() добавляет обратный слэш перед каждым из перечисленных символов, в данном случае - цифр. Если строка состоит только из цифр, обратный слэш будет проставлен перед каждым символом строки, и её длина удвоится, на что и сработает первая проверка. Вторая проверка ($a != '') нужна, чтобы исключить ложное срабатывание, если строка пустая.

      Алсо, ctype_digit() делает то же самое, что и данный говнокод.
      Ответить
    • ыыы:
      пиздец.. а про существование функции is_numeric() все успели забыть? оригинально
      Ответить
      • Как же вы задолбали со своими существованиями функций!

        API всегда учатся по мере использования, и далеко не всегда знаешь о существовании функции, если только начал работать с библиотекой (включая стандартные библиотеки для разных языков).
        А избыточный код вполне может быть понятным, красивым и все такое.

        П.С., я не об этом коде.
        Ответить
        • ого! да это же манифест пхпшника! можно я золотыми буквами его?
          Ответить
    • #5: is_numeric() проверяет, является ли строка допустимым числом. Она понимает в том числе и 16-ричные записи типа 0xFACE, правда, только целочисленные. Этот же индусокод рассчитан на проверку того, что в строке только десятичные цифры. Уже упомянутая ctype_digit(), кстати, именно это и делает.
      Ответить
    • Tiger Claw:
      мозговыносящее решение
      Ответить
    • if ( $var >= 0 && $var <= 0 ) $return true; else return false;

      *нервно курит в сторонке...
      Ответить
      • $var = "test";
        :))
        Ответить
        • В PHP "test" == 0, потому что при «слабом» сравнении строка приведётся к числу. Строки, не начинающиеся с цифр, приводятся к нулю.
          Ответить
    • Он бросил удочку, сетку и схватив мою голову руками присосался к губам, потом сделал еще несколько поцелуев в лицо, щеки и нос, виновато взглянул на меня, подхватил брошенные вещи и скрылся в темноте.
      Ответить

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