2012-02-29 4 views

答えて

2

文字列が相対URLのように解釈されます。URLの前面にHTTPを追加

// 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

@主題:Mmh。多分それはそれが主張するよりスマートです。 'www.vtechpcsupport.com?foo = bar'を試してみると、' foo = bar'をクエリ文字列として正しく識別します。 –

2

これが原因それはscheme一部(HTTPかそこらの)不足しているため、www.vtechpcsupport.comが本当にURLではないという事実のために、このようにそれを試してみてくださいです:

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

これはURLですが、ホストを持つURLではありません。 – Gumbo

+1

@Gumbo、本当はそうではありません;)[General URL Syntax](http://tools.ietf.org/html/rfc1738#section-2) –

+0

@ Gumbo:ブラウザが裸のホスト名ではhttpにデフォルト設定されているため、それをURLにする - 適切なURLにはスキームが必要です。例えばもしそれが実際に 'ftp.vtechpcsupport.com'であって、それにWebサーバーを実行していないのであれば? –

1

これが原因www.vtechpcsupportです.comは完全なURLではありません。

PHP_URL_HOSTを指定すると、関数はURLのホスト部分だけを抽出しようとします。これは、プロトコルが指定されていないため存在しないため、URLは相対的なものとして扱われます。 nameは(相対)パスとして解釈されます。

は、使用してみてください:

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

、あなたが期待する行動を取得する必要があります。

関連する問題