Как применить правила нормализации URL в PHP? - PullRequest
10 голосов
/ 14 ноября 2010

Существует ли ранее существующая функция или класс для нормализации URL в PHP?

В частности, следуя правилам нормализации, сохраняющим семантику, изложенным в этой статье Википедии о нормализации URL (или любой другой «стандарт», которому я должен следовать).

  • Преобразование схемы и хоста в нижний регистр
  • Заглавные буквы в escape-последовательностях
  • Добавление трейлинга / (в каталоги, а не в файлы)
  • Удаление порта по умолчанию
  • Удаление точечных сегментов

Прямо сейчас, я думаю, что я просто буду использовать parse_url() и применять правила индивидуально, но я бы предпочел не изобретать велосипед заново.

1 Ответ

6 голосов
/ 14 ноября 2010

Библиотека Pear Net_URL2 выглядит так, как будто она сделает хотя бы часть того, что вы хотите.Он удалит точечные сегменты, исправит заглавные буквы и избавится от порта по умолчанию:

include("Net/URL2.php");
$url = new Net_URL2('HTTP://example.com:80/a/../b/c');
print $url->getNormalizedURL();

испускает:

http://example.com/b/c

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

Ссылки:

...