この場合、parse_urlが空の文字列を返すのはなぜですか?parse_url urlの空の文字列を返す: 'www.example.com'
<?php
$url='www.example.com';
$var= parse_url($url,PHP_URL_HOST);
print_r($var);
この場合、parse_urlが空の文字列を返すのはなぜですか?parse_url urlの空の文字列を返す: 'www.example.com'
<?php
$url='www.example.com';
$var= parse_url($url,PHP_URL_HOST);
print_r($var);
文字列が相対URLのように解釈されます。URLの前面にHTTPを追加
// print_r(parse_url('www.vtechpcsupport.com'))
Array
(
[path] => www.vtechpcsupport.com
)
しかし、奇妙なことは、['parse_url'](http://php.net/parse_url#refsect1-function.parse-url-notes)の文書では、「この関数は相対URLでは機能しません」ということです。これは "真剣に不正な形式のURL"ではないようです) –
また、 "部分的なURLも受け入れられ、parse_url()は正しく解析するよう努力しています。 – Andy
@主題:Mmh。多分それはそれが主張するよりスマートです。 'www.vtechpcsupport.com?foo = bar'を試してみると、' foo = bar'をクエリ文字列として正しく識別します。 –
これが原因それはscheme
一部(HTTP
かそこらの)不足しているため、www.vtechpcsupport.com
が本当にURLではないという事実のために、このようにそれを試してみてくださいです:
$url = 'http://www.vtechpcsupport.com';
$var = parse_url($url,PHP_URL_HOST);
print($var);
これはURLですが、ホストを持つURLではありません。 – Gumbo
@Gumbo、本当はそうではありません;)[General URL Syntax](http://tools.ietf.org/html/rfc1738#section-2) –
@ Gumbo:ブラウザが裸のホスト名ではhttpにデフォルト設定されているため、それをURLにする - 適切なURLにはスキームが必要です。例えばもしそれが実際に 'ftp.vtechpcsupport.com'であって、それにWebサーバーを実行していないのであれば? –
これが原因www.vtechpcsupportです.comは完全なURLではありません。
PHP_URL_HOSTを指定すると、関数はURLのホスト部分だけを抽出しようとします。これは、プロトコルが指定されていないため存在しないため、URLは相対的なものとして扱われます。 nameは(相対)パスとして解釈されます。
は、使用してみてください:
$url='http://www.vtechpcsupport.com';
、あなたが期待する行動を取得する必要があります。
みては? – Alex