2

ウェブサイトから取得している公開データを取得するためのコードがいくつかあります

//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 に異なるパラメーターを使用して特定の Web サイトに移動します。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 
4

1 に答える 1

1

より具体的にする必要があります。どのようなエラーが発生していますか? どの行がエラーになりますか?

編集:取得しているエラーを指定したので、次のことを行います。

変数を含む文字列でSINGLE引用符を使用していることに気付きました。これは機能しません。代わりに二重引用符を使用してください。

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

おそらくこれが問題ですか?

また、 file_get_contents()を使用できます

if (file_get_contents("WEBSITE.COM/$par") !== false) {
  ...
}
于 2013-05-21T13:54:17.460 に答える