Как мне разбить URL на его составные части в PHP? - PullRequest
1 голос
/ 02 июня 2011

Регулярные выражения никогда не были одной из моих сильных сторон, и это ставит меня в тупик. В рамках проекта я хочу разработать класс ссылок SEO на 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 затем проанализирует переданную строку и выдаст что-то вроде этого:

blog/blog-post-title

Заглушка URL-адреса сообщения блога уже хранится в базе данных. Я думаю, что лучший способ добиться этого - проанализировать переданную динамическую строку URL-адреса и создать ассоциативный массив для анализа. Мой вопрос заключается в том, что было бы регулярным выражением, чтобы взять URL и создать следующий ассоциативный массив в PHP?

link_pieces['page_type'] = 'blog/post';
link_pieces['post'] = 123;
link_pieces['category'] = 5;

Где page_type - это базовый каталог и страница запроса без расширения, а другие значения массива - это переменные запроса?

Ответы [ 2 ]

6 голосов
/ 02 июня 2011

Вы можете просто использовать parse_url и parse_str, регулярные выражения не нужны.

3 голосов
/ 02 июня 2011

Используйте parse_url, чтобы разбить URL-адрес на части:

Эта функция анализирует URL-адрес и возвращает ассоциативный массив, содержащий любые из различных компонентов URL-адреса, которыеприсутствует.

Затем используйте parse_str, чтобы разбить часть URL-адреса строки запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...