Ignorieren von Fehlern in file_get_contents HTTP-wrapper?
Den folgenden code, um eine Abfrage einer online-thesaurus für eine Suchmaschine, ich Baue wie ein college-Projekt, aber ich habe Probleme mit file_get_contents
"failed to open stream" Fehler. Wenn ich senden Sie ein word-thesaurus ist nicht zu erkennen, es wirft einen Fehler. Ich bin versucht, zu schreiben ein Stück code, das wird ignorieren Sie den Fehler und gehen Sie einfach ohne Informationen.
$thesaurus_search="http://words.bighugelabs.com/api/2/0089388bb57f/".$this->formatted_query."/php";
$result_thesaurus=file_get_contents($thesaurus_search);
Habe ich versucht:
if (file_get_contents($thesaurus_search) != NULL)
{ //do stuff }
...aber es funktioniert nicht, weil es immer noch gibt einige Sortieren von string.
Was kann ich tun, um solche Fälle?
- Was genau bedeutet es zurückgeben, wenn ein Fehler vorhanden ist? Einige html? xml? json? Man müsste analysieren, um die zurückgegebenen Daten zu überprüfen Sie die Fehler-codes - es ist unwahrscheinlich, dass eine api würde einfach nichts zurück.
- "Ich bin versucht zu schreiben, ein Stück code, der den Fehler ignorieren und einfach fortfahren, ohne die Informationen". Wie würden Sie fortfahren, ohne die Informationen?
- Vielleicht sollte ich ein wenig konkreter, dieser code ist Teil einer Klasse, die Informationen, die es gibt, ist nicht untrennbar mit dem Endprodukt, es ist nur ein bonus. Also, wenn file_get_contents ist wieder ein Fehler(weil es nicht eine übereinstimmung für das Wort) will ich brechen von der Klasse insgesamt, und nicht wieder einen code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht möchten, dass
file_get_contents
zu berichten HTTP-Fehler als PHP-Warnungen, dann ist dies der sauber Weg, es zu tun, mit einem stream-Kontext (es ist etwas speziell für das):@
sollte funktionieren, aber nicht doof. "unterstützt PHP einen error-control-operator: das at-Zeichen (@). Wenn vorangestellt, um einen Ausdruck in PHP, die Fehlermeldungen, die generiert werden könnten, von diesem Ausdruck werden ignoriert." scheint einfach genug, aber eine Lüge ist.Die einfachste Lösung, wenn Sie in Ordnung sind, nur die Rettung wäre:
Mehr ganz in den Griff es, einen Blick auf die API, wie es aussieht, sollte die überprüfung der der response-header, z.B.:
file_get_contents
gibt bereitsfalse
auf Fehler, ich glaube nicht, dass das notwendig ist.Wenn ich verstehe Sie richtig, Sie versuchen, um einen API-Aufruf
http://words.bighugelabs.com
.Sie müssen cURL zu erreichen, diese also, wenn Sie haben cURL installiert dann dieser code funktioniert für Sie.
Könnten Sie versuchen, curl: