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