我正在尝试下载一个网页,例如:
http://www.site.com/savings/thispage?OneId=88&SecondId=185
CURL在这个页面上失败了;我怀疑是因为&符号。如何转义此“与”符号以允许下载完成?
错误为Unable to resolve host
发布于 2012-09-13 01:22:55
看看:url_encode();和rawurlencode();。
返回一个字符串,其中除-_之外的所有非字母数字字符。已替换为百分号(%),后跟两个十六进制数字和编码为加号(+)的空格。它的编码方式与WWW表单中发布的数据的编码方式相同,也就是与application/x-www- form -urlencoded媒体类型中的编码方式相同。这与»RFC3986编码(参见rawurlencode())的不同之处在于,由于历史原因,空格被编码为加号(+)。
更新:由于错误是Unable to resolve host,请确保您的/etc/resolv.conf文件具有0644的权限。这将确保安全性,并允许Apache/PHP读取和解析主机名。
您可以通过调用gethostbyname();检查PHP和Apache是否可以访问DNS服务。
发布于 2012-09-13 02:07:08
如果你正在做像这样的事情
<?php
$url = "http://www.site.com/savings/thispage?OneId=88&SecondId=185";
$encoded = urlencode($url);
// use cURL to fetch $encoded
?>那么你实际上就是在请求cURL去取http%3A%2F%2Fwww.site.com%2Fsavings%2Fthispage%3FOneId%3D88%26SecondId%3D185。这将被视为主机名,因为没有"/“字符将主机名与请求路径分开。
你是如何启动cURL的?您是在使用PHP library,还是通过system()或shell_exec()之类的东西运行它?根据启动方式的不同,您可能需要以不同的方式进行转义(或者根本不转义)。
如果您实际上是从命令行(而不是从PHP )运行它,那么下面这样的代码应该可以很好地运行:
curl 'http://www.site.com/savings/thispage?OneId=88&SecondId=185'https://stackoverflow.com/questions/12393242
复制相似问题