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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    <? $dir = $APPLICATION->GetCurDir();
    $slashCount = substr_count($dir, "/");
    
    //убираем со страницы отдельной новости
    if($slashCount<6){ ?>
    ...
    }?>

    Какая наикрасивейшая проверка на количество слешей в урл.
    Супер решение

    Запостил: liquor, 14 Июля 2016

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

    • что не так?
      Ответить
    • Что касается именно проверки количества слэшей в строке - всё ж правильно.
      Ответить
    • Да. Тут скорей не говнокод, а говнологика: делать проверку на слеши, что в последствии влечёт невозможность простого смены url-a
      Ответить
    • http://govnokod.ru////////////20380////////////
      Ответить
      • Ну кстати, не-пхп программы, которые роутят регекспами, вполне могут выдать 404. А вот на наличие или отсутствие завершающего слеша, имхо, материться некультурно.
        Ответить
        • > роутят регекспами
          Фублядь, фунахуй!
          Ответить
          • Ебанутый? Так все фреймверки делают.
            Ответить
            • Можно пример любого из "всех фреймворков"?
              Ответить
              • django. Перенаправляет с site/page на site/page/, на site/page// уже выдает 404.
                Ответить
                • Я про регексы в роутинге.
                  Ответить
                  • З.Ы. Oh shi... И правда пиздец из регулярок можно писать...
                    urlpatterns = [
                        url(r'^forgot-password/$', ForgotPasswordFormView.as_view()),
                        url(r'^api/', include(router.urls, namespace='api')),
                    ]
                    Ответить
                    • Во всех что я видел так было. Это только в цги скрипты берутся с файловой системы. С просвещением :)
                      Ответить
                      • Ну мне попадались всякие @route("post/<id:int>"), а это явно не регулярки.
                        Ответить
                        • Ну по сути это и есть регулярки, post/(\d+). Или ты что-то другое хотел?
                          Ответить
                          • > post/(\d+)
                            Фубля. Нетипизированная параша.

                            З.Ы. Сорри, я бухой.
                            Ответить
                            • >Сорри, я бухой.
                              Похоже.

                              > Нетипизированная параша.
                              >\d+
                              Што?
                              Хотя там может быть тупо попытка сделать int() от того что между слешами.

                              Чзх? http://govnokod.ru/19667#comment339758
                              Ответить
                              • Ну вот я выше привёл пример из фласка: "post/<int:id>" - вот это норм. В процедуру прилетает именно int, всё чотко и понятно.

                                А \d+ это хуйня какая-то, которую ещё парсить. Не барское это дело.
                                Ответить
                                • При желании, думаю, можно и регекспами сделать. Просто не комильфо.
                                  Ответить
                                  • Да просто проще выдавать урл в виде /100500/hui-pizda-opisanie чем /100500-hui-pizda-opisanie и парсить его регулярками... Юзеру всё равно похуй.
                                    Ответить
                                    • Второе я видел гораздо чаще, но исходников парсинга не видел, сорри.
                                      Ответить
                                    • Как бы - дело не в простоте. В первом случае у вас некая статья в каталоге(или группе статей) "100500", во втором - id статьи и название. Делается это для того, чтобы юзер мог найти статью в истории браузера, а также глядя на ссылку получил примерное представление о том, куда она ведет.

                                      Да и нечто вроде inval( subStr($link), 1 , strPos($link,'-') ) вряд ли можно назвать "парсингом регулярками"
                                      Ответить
                                      • * inval( subStr($link, 1 , strPos($link,'-') ) )
                                        Ответить
                                        • * intval( subStr($link, 1 , strPos($link,'-') ) )

                                          P.s. Сегодня явно не мой день)
                                          Ответить
                            • (highfive)
                              Я ещё вот думаю сходить за пивом, за мешком штукатурки и мелочами (балкон чиню), но я уже трохи того. Но схожу, и добавлю.
                              Ответить
                  • ^post/<post>

                    Чем не регексп?
                    Ответить
                  • Зенд, джанго, спрингмвц
                    Ответить
            • Почему бомбит, пидарахи?
              Ответить

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