处理简单的html dom中的错误

时间:2013-05-21 13:38:24

标签: php

我有一些代码可以获取我从网站上获取的一些公开数据

//Array of params

foreach($params as $par){

$html = file_get_html('WEBSITE.COM/$par');

$name = $html->find('div[class=name]');
$link = $html->find('div[class=secondName]');

foreach($link as $i => $result2)
{

$var = $name[$i]->plaintext;
echo $result2->href,"<br>";
//Insert to database
} 
}

因此,每次循环时都会在URL中使用不同的参数进入给定的网站,当404出现或服务器暂时不可用时,我会不断收到破坏脚本的错误。我已经尝试过代码来检查标题并检查$ html是否是一个对象,但我仍然得到错误,有没有办法我可以跳过错误并将它们遗漏并继续使用脚本?

代码我试图检查标题

function url_exists($url){
if ((strpos($url, "http")) === false) $url = "http://" . $url;
$headers = @get_headers($url);
//print_r($headers);
if (is_array($headers)){
//Check for http error here....should add checks for other errors too...
if(strpos($headers[0], '404 Not Found'))
    return false;
else
    return true;    
}         
else
return false;
}

代码我试图检查对象

if (method_exists($html,"find")) {
 // then check if the html element exists to avoid trying to parse non-html
 if ($html->find('html')) {
      // and only then start searching (and manipulating) the dom 

1 个答案:

答案 0 :(得分:1)

你需要更具体,你得到什么样的错误?哪条线错了?

编辑:由于您确实指定了您遇到的错误,因此可以执行以下操作:

我注意到你使用带有变量的字符串的 SINGLE 引号。这不起作用,改为使用双引号,即:

$html = file_get_html("WEBSITE.COM/$par");

也许这就是问题?

另外,您可以使用file_get_contents()

if (file_get_contents("WEBSITE.COM/$par") !== false) {
  ...
}