2012-02-29 1 views

ответ

2

Строка интерпретируется как относительный URL:

// print_r(parse_url('www.vtechpcsupport.com')) 
Array 
(
    [path] => www.vtechpcsupport.com 
) 
+0

Да, но странно, что документация ['parse_url'] (http://php.net/parse_url#refsect1-function.parse-url-notes) гласит:« Эта функция не работает с относительными URL-адресами ». Похоже, что это не «серьезно искаженный URL»;) –

+0

В нем также говорится: «Частичные URL-адреса также приняты, parse_url() пытается наилучшим образом проанализировать их». – Andy

+1

@Juicy: Mmh. Может быть, он умнее, чем утверждает. Если я попробую 'www.vtechpcsupport.com? Foo = bar', он правильно идентифицирует' foo = bar' как строку запроса. –

2

Это связано с тем, что www.vtechpcsupport.com не на самом деле URL поскольку оно отсутствует scheme часть (HTTP или так), попробуйте так:

$url = 'http://www.vtechpcsupport.com'; 
$var = parse_url($url,PHP_URL_HOST); 
print($var); 
+1

Это URL, но не один с хостом. – Gumbo

+1

@ Gumbo, на самом деле это не так;) [Общий синтаксис URL-адреса] (http://tools.ietf.org/html/rfc1738#section-2) –

+0

@Gumbo: только потому, что браузеры по умолчанию для http для голых имен хостов не " t сделать его url - схема необходима для правильного URL. например что, если это было на самом деле «ftp.vtechpcsupport.com» и на нем не было веб-сервера? –

1

Это потому, что www.vtechpcsupport .com не является полным URL.

Вы указываете PHP_URL_HOST, чтобы функция пыталась извлечь только часть хоста URL-адреса, которая не существует, так как без указания протокола URL считается относительным - так что вы хотите быть хозяином имя интерпретируется как (относительный) путь.

Попробуйте использовать:

$url='http://www.vtechpcsupport.com'; 

и вы должны получить поведение, которое вы ожидаете.

Смежные вопросы