ФорумПрограммированиеPHP для идиотов → Регулярные выражения

Регулярные выражения

  • imlil

    Сообщения: 50 Репутация: N Группа: Адекваты

    Spritz 5 августа 2010 г. 1:03

    Получаемый url обрабатывается и загружается ,список доступых урлов описан в файле,который роутер загружает и ищет совпадения (аля джанго)

    Для того чтобы сделать данную возможность более ресурсоемкой,пришлось делать таки многомерный массив типа
    array(array('article'=>array('cntrlArticle','[a-z]+',array('articleId')))


    Где ключ массива article это слово между первыми двумя слешами (http:/somesite.ru/article/22/. А второе значение - это само регулярное выражение,а третье это индексы будущего массива $matches,который будет отдан контроллеру. Далее выбирается массив с индексом article и ищется совпадение.

    Я хз как описать это коротко было,но вот сама дилемма.
    Предположим что у нас есть 4 возможных урла,которые будет обрабатывать 1 контроллер.
    1. Статья
    2. Статья с сортировкой
    3. Статья с постраничной навигацией
    4. 2 и 3 вместе

    somesite.ru/artilce/
    somesite.ru/article/id DESC/
    somesite.ru/article/3/ - (3-страница постраничной)
    somesite.ru/article/id DESC/3/

    Описывать это все 4(!) одним регулярным выражениям глупо?! Как это сделать в 1 регулярном выражении,покажите на примере желательно

  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 5 августа 2010 г. 1:16, спустя 12 минут 42 секунды

    /article\/((?<act>\w+)\s(?<sort>\w+))?(?<id>\d+)?/?(?<id>\d+)?/?

    типа того?
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 5 августа 2010 г. 1:26, спустя 10 минут 32 секунды

    я так понял, artilce уже есть…
    ((\w+)\s?(\w+))\/?(\d+)?\/|(\d+)\/

    1: ((\w+)\s?(\w+)) - id DESC/
    2: (\w+) - id
    3: (\w+) - DESC
    4: (\d+) - 3 отсюда id DESC/3/
    5: (\d+) - 3 отсюда 3/

    а вообще, есть такая понтовая плюшка - http://gskinner.com/RegExr/
    Высокоуровневое абстрактное говно
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 5 августа 2010 г. 1:33, спустя 6 минут 20 секунд

    imlil, что-то я пока хуйню вижу в данном списке:
    somesite.ru/artilce/ - с этим все понятно, для простой проверки достаточно строчного " ! is_numeric($var)"
    somesite.ru/article/id DESC/ - тут пиздец, ибо если мы открыли статью, то какая нах сортировка?!
    somesite.ru/article/3/ - (3-страница постраничной) - снова пиздец, ибо постраничная навигация - это цифра, то получается что это условие идентично второму (оба вторых параметра цифры, система не будет знать как их различать).
    somesite.ru/article/id DESC/3/ - смотри предыдущее.

    А вообще меня пиздец заебала эта хуйня с попыткой создать универсальный роутер для одного (ну может двух-трех) своего проекта вместо облегченного "быстророутера" сделать на основе фиксированных (без всяких регулярок и настроек роутера через админку и т.д.) правил для каждого конкретного проекта.
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 5 августа 2010 г. 1:35, спустя 2 минуты 23 секунды

    Givi, у него еще норм)) вот у мя вааще пиздец)) даже показывать стыдно))
    Высокоуровневое абстрактное говно
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz 5 августа 2010 г. 1:46, спустя 10 минут 37 секунд

    Stasovsky, у меня тоже не сладко, но по сути я просто стараюсь перед начальством изъебнутся, ибо немного подзаебывает что они думают мол я совсем дуб-дерево, и иногда рассказывают мне чуть ли не куда нажать чтоб сделать дамп базы. Благо хоть по верстке совсем ничего не говорят, и даже спрашивают советов иногда :)
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 5 августа 2010 г. 1:48, спустя 2 минуты 4 секунды

    Givi, а есть какие-то стандарты по роутерам? подкинь литературы))
    зы, в mvc еще не вник)) ниасилил))
    Высокоуровневое абстрактное говно
  • imlil

    Сообщения: 50 Репутация: N Группа: Адекваты

    Spritz 5 августа 2010 г. 1:52, спустя 4 минуты 25 секунд

    Givi,кэп намекает - это был пример.

    В реальности мне это надо было для админки,которая генерируется автоматом,где admin/model/order/pagination/. (опять пример).

    Причем тут универсальный роутер? Мне не надо /controllerFile/methodClass/. Изначально мне это надо было для чпу и чтобы контроллеры получали только указанные данные (model,id,page  и т.п)

    adw0rd, спасибо.

    Зы,скролить окно после вставки имени,до поля с вводимым сообщением можно,было бы удобно)
  • technobulka

    Сообщения: 4540 Репутация: N Группа: Джедаи

    Spritz 5 августа 2010 г. 1:55, спустя 2 минуты 41 секунду

    Зы,скролить окно после вставки имени,до поля с вводимым сообщением можно,было бы удобно)

    специально сделали, чтоб можно было вставить несколько имен.. то есть не скроллить постоянно вверх…
    Высокоуровневое абстрактное говно
  • imlil

    Сообщения: 50 Репутация: N Группа: Адекваты

    Spritz 5 августа 2010 г. 1:58, спустя 3 минуты 9 секунд

    До сего момента юзал http://myregexp.com/. Мб перейду на RegExr
    Спустя 169 сек.
    С зажатым shift или ctrl модификаторами можно,если лень не возмет вверх:)). Хотя лучше если мышку задерживаешь на нике более 3-4с - скролл,а то там базовые браузерные модификаторы уже вмешиваются…
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 5 августа 2010 г. 2:47, спустя 48 минут 38 секунд

    а вообще, есть такая понтовая плюшка - http://gskinner.com/RegExr/

    http://pyha.ru/fishki/regexp/
    Спустя 28 сек.
    если нужен сервис регулярок - мне пыховский за глаза хватает
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 5 августа 2010 г. 2:59, спустя 12 минут 22 секунды

    adw0rd, +1
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 5 августа 2010 г. 3:05, спустя 6 минут 20 секунд

    http://pyha.ru/fishki/regexp/

    о, откуда он у нас?
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz 5 августа 2010 г. 3:35, спустя 29 минут 46 секунд

    100 лет в обед
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 5 августа 2010 г. 3:37, спустя 2 минуты 6 секунд

    А я и не видел)))

Пожалуйста, авторизуйтесь, чтобы написать комментарий!