Как применить правила нормализации URL в PHP?

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

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

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

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

Ответ 1

Библиотека 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-адресов с каталогами, которые сложнее делать в общем виде. Но это близко.

Литература: