Скажите, что я запрашиваю
parent/child/child/page-name
в моем браузере.Я хочу извлечь родителей, детей, а также имя страницы.Вот регулярные выражения, которые я сейчас использую.Не должно быть никаких ограничений относительно количества детей в запросе URL.В настоящее время имя страницы всегда будет в конце и никогда не будет опущено.
^([\w-]{1,}){1} -> Match parent (returns 'parent')
(/(?:(?!/).)*[a-z]){1,}/ -> Match children (returns /child/child/)
[\w-]{1,}(?!.*[\w-]{1,}) -> Match page name (returns 'page-name')
Чем больше я играю с этим, тем больше я чувствую, насколько неуклюже это решение.Это для небольшой CMS, которую я разрабатываю в ASP Classic (:(). Это похоже на пути маршрутизации MVC. Но вместо вызова контроллеров и функций, основанных на запросе URL. Я бы путешествовал по иерархии и находилсоответствующая страница в базе данных. База данных использует модель вложенного набора и связана уникальным именем страницы для каждого дочернего элемента.
Я пробовал использовать функцию split для разделения с помощью символа / delimiter, однако обнаружил, чтовложив столько разделенных операторов вместе, это стало очень нечитаемым.
Все сказали, мне нужен эффективный способ разобрать имя родителя, детей, а также имя страницы в строке. Может кто-нибудь предложить альтернативное решение?
Если честно, я даже не уверен, является ли регулярное выражение лучшим решением моей проблемы.
Спасибо.