首页 > 解决方案 > 如何在 PHP 中使用 curl 从“unicode 域名”获取响应?

问题描述

我想获取具有 unicode 名称 ( http://خبر.com ) 的站点的内容。我尝试了以下代码。

$site = "https://خبر.com/";
$curl = curl_init();
curl_setopt_array($curl, array(
    CURLOPT_URL => $site,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_TIMEOUT => 30000,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "GET",
    CURLOPT_HTTPHEADER => array('Content-Type: application/x-www-form-urlencoded',),
));
$response = curl_exec($curl);
curl_close($curl);

而这个片段

$response = file_get_contents($site);

我也试图获取网站的 IP,但我做不到。我尝试了其他 Unicode 域名,但问题仍然存在。并且英文域名可以正常加载。

标签: phpunicodephp-curl

解决方案


使用idn_to_ascii()将您的 Unicode 域名解析为 ASCII

解析后应该可以正常工作。


推荐阅读