2009-06-26 5 views
3

Ich bin auf der Suche nach dem besten Weg, Informationen von einer Webseite (meiner eigenen Website) zu erhalten und dann diese Informationen zu suchen, um eine bestimmte zu finden Text.Best Practice für die Verwendung von fopen() oder file_get_contents() zum Abrufen von Webseiten

Beachten Sie, dass einige der Server, auf denen PHP/Joomla ausgeführt wird, nicht über cURL verfügen. Ich möchte daher keine unerwarteten Fehler verursachen.

Ich habe sowohl fopen() als auch file_get_contents() angeschaut und beide scheinen widersprüchliche Ansichten voneinander zu haben, was mit/ohne cURL funktioniert.

Antwort

4

Sie funktionieren beide ohne Locken, aber Sie müssen allow_url_fopen aktiviert haben. Sie können dies überprüfen, indem Sie phpinfo() ausführen. Es gibt Auswirkungen auf die Sicherheit jedoch sehen:

Should I allow 'allow_url_fopen' in PHP?

So Seiten zu packen, Sie fopen( verwenden können), file_get_contents() oder eine andere unabhängige HTTP-Client implementiert in PHP wie HttpClient , die ohne diese funktionieren kann.

1
I read now and then on forums and chats that allow_url_fopen has to be enabled for Joomla to work properly. That's an "urban legend", leftover from old versions, but almost no one seems to actually test and confirm that fact. It seems the Docs are also wrong about it. 

Joomla! CMS & Framework don't depend on "allow_url_fopen" being enabled. Period! 

Quite the contrary, J! Framework has a very good and robust core subpackage HTTP, which supports "drivers" based on cURL, streams and sockets. Which means even with fopen() URL wrappers ("streams" driver) disabled altogether ("allow_url_fopen = 0"), any extensions implementing HTTP subpackage still has "cURL" and "sockets" driver available. For example, Joomla Update component will, in case "allow_url_fopen" is disabled, fall back on using cURL wrapper (given cURL PHP extension is enabled). 
+0

Hinweis: falls Sie an upvotes interessiert sind; Überlegen Sie, gut zu schreiben, lesbarer Text? Du weißt, wie Absätze zu verwenden, und vielleicht * Markup *, um Dinge zu betonen; anstatt solch ein unlesbares Durcheinander fallen zu lassen. – GhostCat

+0

Danke @GhostCat –

+0

Das ist jetzt besser; aber was ist der Sinn der 4-Räume Codeblockeneinrückungen? – GhostCat