2016-11-17 3 views
6

私はfile_get_contents()を使用してページのコンテンツをつかむしようとするたびに、ドメインはその中のUnicode文字を持って、私はこれを取得:のfile_get_contents()とUnicode文字ドメイン内(æøåのような)

のfile_get_contents(https://møller.dk/を) :php_network_getaddresses:ストリームをオープンに失敗しました失敗のgetaddrinfo:名前を知られていないサービスの>ファイルの場所<

私は、ドメイン内のUnicode文字を持っている場合にのみ発生します。

file_get_contents("http://møller.dk/"); 
+0

「møller.dk」が存在しないので実際の例がありますか – cmorrissey

+0

@cmorrissey確かです。 http://møller.dk/ – MortenMoulder

+0

に移動して、あなたのホストからmøller.dkにpingすることはできますか? – Federkun

答えて

5

file_get_contents('http://' . idn_to_ascii('møller.dk')); 

参考:

+0

人は醜いです。私はそれがうまくいくと思う。ありがとう! – MortenMoulder

+0

私は1人のために今日何かを学んだ。 1つは決して学ぶことを止めません;-) –

+0

@ Fred-ii-編集のおかげで!私は通常この時間を忘れたばかりのリンクを含めます – cmorrissey

2

あなたはPunycode、エンコード/デコードIDNA名を使用することができます:ここでは例です

あなたは idn_to_ascii()機能を使用する必要があり
$Punycode = new Punycode(); 
$baseUrl = 'ærlig.no'; 
$url = 'http://'.$Punycode->encode($baseUrl); 

echo file_get_contents($url); 
+0

cmorrisseyの答えは素晴らしいです。これは動作しますが、私はそれが必要ではないと思います。しかし、ありがとう! – MortenMoulder

+0

うん、ネイティブ関数が最善の方法です。いくつかの代替案を示しています。 –

関連する問題