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

    +4

    1. 1
    2. 2
    3. 3
    if (preg_match('/'.preg_quote($subString).'/', $string)) {
        ...
    }

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

    Запостил: zlsoft, 22 Сентября 2017

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

    • lol
      Ответить
    • Пахнет опытным прогером со знаниями фреймворков
      Ответить
      • Кстати, совсем наоборот, фреймворки не любит, потому что "они тормозят".
        Ответить
      • и прототупесов
        Ответить
    • Но ведь strpos не работает для многобайтных кодировок.
      Ответить
      • Во-первых, там в задаче только латиница.
        Во-вторых, с чего вдруг не работает для проверки, входит подстрока в строку или нет?
        Ответить
    • Чисто предположу. Автор кода узнал что preg_match работает быстрее чем str_pos ну и ускорил код... За эти функции достоверно не скажу. Но: Сравнительно недавно прикола для сравнивал str_replace и preg_replace на замене в тексте двойного пробела на одинарный. Регулярки оказались "заметно" быстрее. Правда "заметно" это на большом количестве итераций :)
      Ответить
    • https://ideone.com/vzMNL1 ЧЯДНТ?
      Алсо, как вообще надо было заимплементить str_replace(), чтобы скомпилить регулярку и разобрать ей текст оказалось быстрее, чем тупо найти и заменить известную последовательность на другую известную?
      Ответить
      • Может быть там регулярка JIT'ится и кэшируется?
        Ответить
        • Вы о чем вообще? Я чего-то не понимаю?
          8.1062316894531E-6 это быстрее, чем 1.7036969661713
          В тесте @Stallman str_replace() быстрее регулярки.
          Ответить
        • Очень маловероятно, учитывая, что это ПХП, где регулярка - это обычная мутабельная пыхострока с правильным содержимым, а preg_replace() - это обычная пыхофункция.
          Ответить
      • у вас в тесте str_replace работает на несколько порядков быстрее
        Ответить
      • Понятия не имею. Может потому что у меня текст реальный был, или из за того что \s это не совсем пробел. Я не особо озадачивался почему и как.
        Ответить
        • Но даже в таком случае регексп все равно получается медленнее, хоть и не на несколько порядков.
          > текст реальный
          Пых умеет отличать реальный текст от нереального и для реального включает какие-то магические оптимизации? :3
          Ответить
      • Посыпаю голову пеплом. Нашел тот свой тест, там чуть сложнее задача и я не в совсем равные условия поставил функции :) наговнокодил....
        Ответить
        • ... запостите его на говнокод.ру, посмеёмся вместе! (c)
          Ответить

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