2011-01-03 3 views
4

Ich habe einen Zweifel daran, welche schneller in der Verarbeitung ist?PHP Dom Dokument html ist schneller oder preg_match_all Funktion ist schneller?

dom document oder preg_match_all mit curl-funktion ist schneller in html page parsing ?? und wird dom document function eine spur hinterlassen auf anderen server wie curl funktion tun? Zum Beispiel verwenden wir in der curl-Funktion einen Benutzeragenten, um zu definieren, wer darauf zugreift, aber im dom-Dokument gibt es nichts.

+1

Worte, die Sie verstehen, es ist schwer. Beispiel Verwendung – zzzzBov

+0

Was versuchen Sie von den Dokumenten zu bekommen, die Sie holen? – dqhendricks

Antwort

0

dom Funktionen haben nichts mit HTML-Abruf zu tun.

jedoch gibt es Ladefunktionen, die verwendet werden können, um HTTP-Ressourcen direkt abzurufen.

werden sie das gleiche Verhalten wie file_get_contents ohne Kontextparameter zeigen.

wie zu dem anderen Teil Ihrer Frage. Preg-Funktionen sind schneller. sie sind jedoch nicht für diesen Zweck gedacht und Sie werden es wahrscheinlich bereuen, sie bald zu diesem Zweck verwendet zu haben.

Wenn Sie HTML mit regulären Ausdrücken analysieren, sind Sie entweder völlig verrückt super, oder einfach nicht das Konzept von HTML.

5

Ist es wichtig, was schneller ist, wenn man falsche Ergebnisse gibt?

Die Übereinstimmung mit regulären Ausdrücken, um ein einzelnes Datenbit aus dem Dokument zu erhalten, ist schneller als das Parsen eines gesamten HTML-Dokuments. Reguläre Ausdrücke können HTML jedoch nicht in allen Fällen korrekt analysieren.

Siehe http://htmlparsing.com/regexes.html, mit dem ich begonnen habe, diese häufige Frage zu beantworten. (Und für den Rest von Ihnen, die das lesen, kann ich Hilfe verwenden. Die Quelle ist auf GitHub, und ich brauche Beispiele für viele verschiedene Sprachen.)

1

Reguläre Ausdrücke werden wahrscheinlich schneller sein, aber sie sind wahrscheinlich auch die schlechtere Wahl . Wenn Sie Ihre Anwendung nicht bewertet und profiliert haben und nichts anderes zur Optimierung gefunden haben, sollten Sie sich einen geeigneten vorhandenen Parser ansehen.

Während reguläre Ausdrücke verwendet werden können, um HTML, it takes a thorough effort to come up with a reliable parser. (und HTML) zuverlässig. Es gibt auch eine Reihe von Drittanbieter-Bibliotheken. Siehe meine Antwort auf

Wie für einen benutzerdefinierten User-Agenten zu senden, ist dies möglich, mit DOM zu. Sie müssen und attach it with the underlying libxml functions. Sie können einen der available HTTP Stream context options this way liefern. Siehe meine Antwort auf

für ein Beispiel, wie ein benutzerdefinierten Useragenten zu liefern.