Как стать автором
Обновить

Комментарии 7

Эм. Смысл понятен. Но вы же сами написали, что все реализовано. Зачем костыли такие?
При разборе URL'а типа «site.ru/page.php» (без «http://») getHost() вернёт пустую строку, а getPath() вернёт «site.ru/page.php».

Пусть. Проверяете с помощью рег выражения на наличие нужного «http://», если нет — дописываете. И дальше стандартные методы. Это раз.
А во вторых в ЗФ2 очегь легко избавиться от ".php" в названии страницы. Да и ЧПИ никто не отменял. Работал с ЗФ2 год. И с такой проблемой ни разу не сталкивался.
Вы неправильно поняли (или я не ясно объяснил) задачу. Я разбираю URL полученный от пользователя (например через форму). В поле «Адрес вашего сайта» кто-то может ввести «http://site.ru», а кто-то «site.ru». Оба варианта должны быть правильно интерпретированы. Тут ЧПУ (ЧПИ ?) не при чём.
а. я понял, что вы делаете манипуляции внутри сайта своего.
Но все равно, просто дописать http:// — это 2 коротких строчки ( одна из которых сравнение по рег выраж.). Меньше и проще код — меньше ошибок в дальнейшем.
Так казалось и мне, но на деле оказалось ровно наоборот. Допустим, мы проверили с помощью регулярных выражений следующее: присутствие/отсутствие «http://»; присутствие/отсутствие «/» в начале. Далее всё равно нужно проверять TDL. Кроме того, на выходе я хочу получить класс Zend\Uri\Http (или, как в данном случае, его наследника). Но все нужные нам регулярные выражения уже написаны в методах класса Zend\Uri\Http. Поэтому именно в данном случае написание своих регулярных выражений — костыли. Короче и, на мой взгляд правильнее, пользоваться тем, что уже есть и написано в ZF2, и при необходимости просто дополнить. Как я и сделал.
Кроме того, на выходе я хочу получить класс Zend\Uri\Http

Зачем, если есть parse_url, который написан на C?

Да и нормализацию URL можно сделать в 4 строчки:
if (substr($url, 0, 1) !== '/' && !preg_match('|^http(?:s){0,1}://|i', $url)) {
    $url = 'http://' . $url;
}
return parse_url($url);


На выходе получается тот же массив
["scheme" => '...', "host" => '...', "path" => '...']
|^http(?:s){0,1}://|i

Мсье знает толк…
|^https?://|i

Вот так как-то более естественно :)
это для наглядности =)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории