3

I have a PHP script that I'm trying to get the contents of a page. The code im using is below

$url = "http://test.tumblr.com";

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$txt = curl_exec($ch);
curl_close($ch);

echo "$txt";

It works fine for me as it is now. The problem I'm having is, if I change the string URL to

$url = "http://-test.tumblr.com"; or $url = "http://test-.tumblr.com";

It will not work. I understand that -test.example.com or test-.example.com is not a valid hostnames but with Tumblr they do exists. Is there a work around for this?

I even tried creating a header redirect on another php file so cURL would be first getting a valid hostname but works the same way.

Thank you

4

1 回答 1

0

带连字符的域名

正如您在上一个关于subdomain 中允许的字符的问题中看到的那样,-它不是开始或结束子域的有效字符。所以这实际上是正确的行为。前段时间在curl 邮件列表中报告了同样的问题,但由于curl遵循标准,他们的网站实际上没有什么可以改变的。

很可能 tumblr 知道这一点,因此提供了一些指向同一站点的替代地址。

可能的解决方法

但是,您可以尝试使用nslookup手动查找 IP,然后将您的请求直接发送到该 IP(并手动将主机名设置为正确的值)。我没有尝试过,但它似乎nslookup能够解析以连字符开头或结尾的格式错误的域名。

卷曲

此外,您应该知道,phpcurl函数应该是 curl命令行工具的直接接口,因此,如果您遇到特殊行为,很可能是由于curl命令行工具中的逻辑而不是 php 函数。

于 2013-01-24T10:29:30.603 回答