2017-04-22 64 views
0

返回false我想以下几点:PHP简单的HTML DOM解析器上有效的URL

$url = 'https://www.tripadvisor.es/Hotels-g187514-Madrid-Hotels.html' 

$ta_html = file_get_html($url); 
var_dump($ta_html); 

返回false,这是工作和获取正确的HTML为:

$url = 'https://www.tripadvisor.es/Hotels-g294316-Lima_Lima_Region-Hotels.html#ACCOM_OVERVIEW' 

我的第一个我以为它有一个重定向,但我用卷曲和它的200 OK检查了标题,在两种情况下看起来都是一样的。会发生什么?如何解决?

这似乎是这个问题的一个副本: Simple HTML DOM returning false这也是悬而未决

+0

你想从该页面中取消什么?我更喜欢使用'DOMDocument' php内置类。 –

+0

我只是试验html简单的dom解析器。但我想知道为什么在同一个网站上看起来像两个同等的url一个工作,而另一个不是 – Aschab

回答

-1

使用file_get_contents()相反,对我的作品。

$url = "https://www.tripadvisor.es/Hotels-g187514-Madrid-Hotels.html"; 
file_put_contents("hello.html", file_get_contents($url)); 

file_get_html("Hello_html"); 
+0

OP写道,它适用于另一个网址。这不是答案,也不是正确的解决方案 – gaganshera

+0

我在示例中使用的网址,可以工作,当你没有测试时,不会说狗屎。 – getl0st

+0

请再次阅读这个问题,这次是正确的。 – gaganshera

0

于是我找到了一个解决办法这样做:

$base = $url; 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($curl, CURLOPT_HEADER, false); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($curl, CURLOPT_URL, $base); 
curl_setopt($curl, CURLOPT_REFERER, $base); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); 
$str = curl_exec($curl); 
curl_close($curl); 

$html = new simple_html_dom(); 
$html->load($str); 

说实话我不知道为什么这个作品,什么是原来的问题,如果任何人都可以指出这一点我将不胜感激

0

看起来这是因为该检查的simple_html_dom.phpfile_get_html()功能发生

if (empty($contents) || strlen($contents) > MAX_FILE_SIZE) 
{ 
    return false; 
} 

这可能是内容的长度大于MAX_FILE_SIZE

相关问题