我有一个PHP脚本,我正在尝试获取页面的内容。我正在使用的代码在
之下$url = "http://test.tumblr.com";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$txt = curl_exec($ch);
curl_close($ch);
echo "$txt";
它现在对我来说很好。我遇到的问题是,如果我将字符串URL更改为
$url = "http://-test.tumblr.com";
或$url = "http://test-.tumblr.com";
它无效。我知道-test.example.com或test-.example.com不是有效的主机名,但是使用Tumblr它们确实存在。有解决方法吗?
我甚至尝试在另一个php文件上创建标题重定向,因此cURL将首先获得有效的主机名,但工作方式相同。
谢谢
答案 0 :(得分:0)
正如您在上一个关于the allowed characters in a subdomain的问题中看到的那样,-
不是用于开始或结束子域的有效字符。所以这实际上是正确的行为。
前一段时间curl
mailing list报告了同样的问题,但由于curl
遵循标准,因此其网站上实际上没有任何变化。
很可能tumblr知道这一点,因此提供了一些通往同一网站的替代地址。
但是,您可以尝试使用nslookup
手动查找IP,然后将请求直接发送到此IP(并手动将主机名设置为正确的值)。我没有尝试过,但似乎nslookup
能够解析以连字符开头或结尾的格式错误的域名。
另外你应该知道,php curl
函数应该是curl
命令行工具的直接接口,因此,如果你遇到特殊行为,很可能是由于逻辑在curl
命令行工具而不是php函数。