Это только часть задачи.
Вначале нужно проверить проходит ли строка по регулярному выражению.
Сразу договоримся что / это разделитель и в случайные символы не входит.
Как бы обьяснить попроще....
Есть вот такая строка:
book/<name>|[a-z]|i/<:p>|[0-9]{2,3}|i/<:id>/<!:q>|^[a-z]+$|i
Она проверяет url из браузерной строки на соответствие:
<name>
- имя переменной в которую попадет часть url
<:p>
- имя необязательного параметра
<!:q>
- имя обязательного параметра
В чем отличие переменной от параметра?
В ссылке переменная это просто что то что между //
А параметр это кода написано так /p/значение/
В общем я нанял программиста и он написал для меня этот роутер, но толку оказалось 0.
Так как он не правильно работает и сколько я не пытался его поправить, ничего не вышло.
Решил написать грамотно с 0 и самостоятельно.
Но для начала хочу понять как в регулярных выражениях учесть не обязательный параметр.
В регулярных выражениях есть алиасы, и как раз они мне подходят.
book/(?P<name>[a-z])
Как составить регулярное выражение вида:
book/любые символы/p/любое число/id/любые символы/q/любое число
При этом p/любое число может как быть в строке так и не быть, а может быть в таком виде p//
И еще /p/любое число/ и /id/любые символы/ и /q/любое число/ могут идти в любом порядке, например так
book/любые символы/q/любое число/id/любые символы/p/любое число
:)
жесть