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

    0

    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
    function isRegEx($test)
    {
        $notThisLine = error_get_last();
        $notThisLine = isset($notThisLine['line']) ? $notThisLine['line'] + 0 : 0;
        while (($lines = rand(1, 100)) == $notThisLine);
        eval(
            str_repeat("\n", $lines) . 
            '@preg_match(\'' . addslashes($test) . '\', \'\');'
        );
        $check = error_get_last();
        $check = isset($check['line']) ? $check['line'] + 0 : 0;
        return $check == $notThisLine;
    }

    "Test if a regular expression is a valid one in PHP"
    https://stackoverflow.com/a/15143479/6702274

    Запостил: kezzyhko, 28 Марта 2021

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

    • Хм, а зачем эти пляски с рандомизацией пустых строчек?

      Иначе пых закешит регулярку и в следующий раз проверка закосячится?
      Ответить
      • Вероятно, что бы убедиться, что error_get_last укажет на ошибку именно в нашей регулярке, а не на какое-то старое говно...
        Ответить
        • что сломалась регулярка, а не пых
          Ответить
        • Дык там почистить ошибку вроде можно перед тем как eval звать. Или нет такой функции?
          Ответить
          • Из комментов со stackoverflow:
            "Seriously, I've managed to find my way back here and I still have absolutely no idea about this snippet; what on earth is it doing?"
            Ответить
    • Какое-то днище. А нельзя скомпилировать регулярку как в нормальных языках и таким образом проверить?
      Ответить
      • regular expression validator as service
        и выдавать все прошедшим gif с гордой надписью valid PHPCRE
        Ответить
        • Principal RegExp Engineer
          Ответить
          • Знаешь, есть такие днищевые индексы типа "10 самых востребованных языков: CSS, SCSS, HTML, SQL, XML" итд. Так вот там иногда бывает RegExp
            Ответить

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