日本語ドメインからfile_get_contentsを使ってHTMLを取得する
file_get_contentsって日本語ドメインに対応してないので、
$url = 'http://日本語.jp/'; $html = file_get_contents($url); echo $html;
とかやろうとすると
PHP Warning: file_get_contents(http://日本語.jp/): failed to open stream: php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known in nihongo_domain.php on line 2
とか出て怒られます。
punycode
日本語ドメインってpunycodeという、普通のURLと同じような半角英数で出来たURLに変換されるようです。
日本語.jpだと
http://xn--wgv71a119e.jp/
というURLに変換されます。
このURLならfile_get_contentsでも取得できそうです。
日本語ドメインをpunycodeに変換する
PHP標準ライブラリでは変換出来ないのでPEARのライブラリを使います。
sudo pear channel-update pear.php.net
sudo pear install Net_IDNA2-0.1.1
PHPで日本語ドメインを扱う方法(Punycode変換)
ここを参考にしてやってたんですが、
Non-static method NET_IDNA2::getInstance() should not be called statically.
ってエラーが出たのでちょっと変えてこうします
require_once 'Net/IDNA2.php'; $idna = new Net_IDNA2(); $idna_instance = $idna->getInstance(); $url = 'http://日本語.jp/'; $encoded_url = $idna_instance->encode($url); $html = file_get_contents($url); echo $html;