Script zu langsam: preg_match...
tester
- php
moin
hab in meinem script folgendes eingebaut, da ich es wirklich in dieser ausführung brauche:
preg_match("°(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?)\r\n°s",$datei_zeile,$arr_content_zeile);
nun wird das zeit limit überschritten, d.h. dauert länger als 30 sec.
auf meinem schnellen rechner zuhause lässt es sich in 5-10 sec problemlos durchführen.
was könnte ich schreiben, um exakt das selbe ergebnis in dem ergebniss array $arr_content_zeile zu erhalten?
danke
Hallo tester,
[...]
preg_match("°(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?);(.*?)\r\n°s",$datei_zeile,$arr_content_zeile);
[...]
was könnte ich schreiben, um exakt das selbe ergebnis in dem
ergebniss array $arr_content_zeile zu erhalten?
Wesentlich schneller (da keine Endlos-Schleife):
~([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*);([^;]*)\r\n
Wenn du das * noch in ein + umwandeln kannst, wird es nochmal
schneller, da der Automat dann noch eher terminieren kann. Ansonsten
sieht es mir eher nach einer Aufgabe fuer split() aus als fuer
Regexe. Ein split(';',$datei_zeile) mit einer anschliessenden
Pruefung auf die Laenge ist wesentlich schneller, da kein Pattern
matching angewendet werden muss.
Grüße,
CK
Hallo Christian,
sieht es mir eher nach einer Aufgabe fuer split() aus als fuer
Regexe. Ein split(';',$datei_zeile) mit einer anschliessenden
Pruefung auf die Laenge ist wesentlich schneller, da kein Pattern
matching angewendet werden muss.
ich würde aber eher explode verwenden, da mit split wieder ein
regulärer Ausdruck verwendet wird.
Grüße aus Nürnberg
Tobias
Hallo Tobias,
sieht es mir eher nach einer Aufgabe fuer split() aus als fuer
Regexe. Ein split(';',$datei_zeile) mit einer anschliessenden
Pruefung auf die Laenge ist wesentlich schneller, da kein Pattern
matching angewendet werden muss.
ich würde aber eher explode verwenden, da mit split wieder ein
regulärer Ausdruck verwendet wird.
Ist das so? Danke, wieder was gelernt.
Grüße,
CK
Hallo,
ich würde aber eher explode verwenden, da mit split wieder ein
regulärer Ausdruck verwendet wird.
Ist das so? Danke, wieder was gelernt.
Siehe http://de2.php.net/manual/de/function.split.php, der Tipp unter der Beschreibung.
Ich hatte gedacht, dass split auch nur ein Alias auf explode wäre, so wie bei join und implode.
Freundliche Grüsse,
Vinzenz