"PHP" / Говнокод #23354 Ссылка на оригинал

0

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

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

Запостил: zlsoft zlsoft, (Updated )

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

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

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8