Комментарии 7
Эм. Смысл понятен. Но вы же сами написали, что все реализовано. Зачем костыли такие?
При разборе URL'а типа «site.ru/page.php» (без «http://») getHost() вернёт пустую строку, а getPath() вернёт «site.ru/page.php».
Пусть. Проверяете с помощью рег выражения на наличие нужного «http://», если нет — дописываете. И дальше стандартные методы. Это раз.
А во вторых в ЗФ2 очегь легко избавиться от ".php" в названии страницы. Да и ЧПИ никто не отменял. Работал с ЗФ2 год. И с такой проблемой ни разу не сталкивался.
При разборе 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:// — это 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" => '...']
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Разбор URL в Zend Framework 2