php - 如何在 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 域名,但问题仍然存在。并且英文域名可以正常加载。
解决方案
使用idn_to_ascii()将您的 Unicode 域名解析为 ASCII
解析后应该可以正常工作。
推荐阅读
- spring-boot - @Constructorresult 与自联接类映射
- amazon-web-services - 更改电子邮件后用户可以在 AWS Cognito 中的电子邮件验证之前登录
- ruby-on-rails - Rails 安全会话和 cookie 不适用于 CDN
- java - 爪哇。从不同的类运行一个函数
- php - Yii2 模型 ViaTable
- ocaml - Ocaml错误列出高阶函数
- http - 多部分消息可以包含原始二进制内容吗?
- android - 如何在列表视图中获取图像的位置并在列表视图中单击另一个图像时切换
- python - Python While 循环 - 不起作用 BREAK
- javascript - request-promise 总是返回响应而不是返回值