是否可以编写一个PHP函数,以与浏览器相同的方式返回任何可能链接的HTML字符串?链接示例:“http://google.com”,“”,“mywebsite.com”,“somesite.com/.page/nn/?s=b#85452”,“lichess.org”
我尝试了什么:
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSLVERSION, 3);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
$data = curl_exec($curl);
if(curl_errno($curl)){
echo 'Curl error: ' . curl_error($curl);
}
echo $data;
curl_close($curl);
可悲的是,对于某些链接,由于SSL或任何其他内容,此代码返回空白页面,但对于某些链接,它可以正常工作。
或者除了CURL之外还有其他选择吗?我只是不明白为什么php无法检索任何开箱即用的HTML。
答案 0 :(得分:1)
如果您运行的是旧版本的PHP,则CURL可能会在SSL站点上失败。确保您的操作系统和PHP版本是最新的。
您也可以选择使用适用于网址的file_get_contents()
,如果您只想制作简单的GET请求,通常会更简单。
$html = file_get_contents('https://www.google.com/');