Регулярные выражения никогда не были одним из моих сильных сторон, и у меня есть я в тупике. В рамках проекта я хочу создать класс ссылок на PHP в PHP. Работа с mod_rewrite
через Apache довольно проста для меня, и это отлично работает.
Тем не менее, я хотел бы создать функцию, которая может генерировать ссылку SEO на основе динамического URL, который я передаю в качестве первого (и единственного) параметра функции.
Например, это будет вызов функции в PHP:
<a href="<?= SEO::CreateLink('blog/post.php?post=123&category=5') ?>" title="Blog Post Title">Blog Post Title</a>
Затем функция CreateLink
проанализировала переданную строку и CreateLink
что-то вроде этого:
blog/blog-post-title
Заголовок URL-адреса сообщения в блоге уже хранится в базе данных. Я думаю, что лучший способ достичь этого – проанализировать динамическую строку URL, переданную в, и создать ассоциативный массив для анализа. Мой вопрос: каким будет регулярное выражение для URL-адреса и создать следующий ассоциативный массив в PHP?
link_pieces['page_type'] = 'blog/post'; link_pieces['post'] = 123; link_pieces['category'] = 5;
Где page_type
является базовым каталогом и страницей запроса без расширения, а другие значения массива – это vars запросов?
Вы можете просто использовать parse_url
и parse_str
, нет необходимости в регулярных выражениях.
Используйте parse_url
чтобы разбить URL на части:
Эта функция анализирует URL-адрес и возвращает ассоциативный массив, содержащий любой из различных компонентов URL-адреса, которые присутствуют.
Затем используйте parse_str
чтобы разбить часть запроса.