2016-07-28 5 views
2

Ich benutze die Curl-Methode, um die HTTP-Antwort vor dem Verschrotten zu überprüfen.Wie setze ich fort? Scrapping zum nächsten Array (i) wenn eins zurückkommt "Konnte Steam nicht öffnen"

foreach($URls as $URL){ 
if($response($URL)==200){ 
    $html= new \Htmldom($URL);}} 

Aber manchmal als (die Server-Antwort 404), Loop stoppt, möchte ich es (bewegen, um die nächsten) gibt sogar eine der Seiten fortzusetzen, wie fehlschlägt.

Ich bin mit Laravel Yanqi HTMLDom Parser

+1

Ich bin dieses Problem lösen können durch SHUTUP Operator, if (html $ = @ new \ Htmldom ($ URL))! == FALSE Die Schleife nächsten weiter .. Das machte meinen Tag –

Antwort

1

Ich glaube, Sie try{}catch{} Blöcke Benutzer Ihre Looping Prozess fortzusetzen. Unten ist das Beispiel dafür.

foreach($URls as $URL) { 
    try{ 
     if($response($URL)==200) { 
     $html= new \Htmldom($URL); 
     } 
    } catch(\Exception $e) { 
     // can catch exception 
    } 
} 

Ich denke, das wird Ihnen helfen.

+0

Es wäre besser, @ zu verwenden. –

0

ein anderes es hinzufügen:

foreach($URls as $URL){ 
    if($response($URL)==200){ 
     $html= new \Htmldom($URL); 
    } else { 
     continue; 
    } 
} 
+0

Die Probleme scheint in diesem Fall nicht erwähnt zu werden, denn wenn ich sonst etwas hinzufüge, wird es nichts tun, außer es würde sich zu einer ELSE-Anweisung wenden, wenn die IF-Bedingung fehlschlägt. Ich möchte nichts tun, wenn die Bedingung der IF fehlschlägt. Manchmal Während der Prüfung Antwort gibt es 200 Antwort und wenn es um die nächste Bedingung, die $ html ist = New \ Htmldom ($ URL); Es wird eine weitere Anfrage gesendet, für die 404 nicht gefunden wird (Da Server Anfragen ablehnen.) @Janno –