Archiv verlassen und diese Seite im Standarddesign anzeigen : ereg oder eregi
bweichel
03.07.2003, 16:05:40
Hallo,
ich habe eine Zeichenkette und möchte alle in " (Anführungszeichen) gesetzte Strings herausfiltern und einzeln bearbeiten. Wir kann ich das mit ereg lösen?
Wenn ich nach ereg(""(.*)"",$str,$regs); suche bekomme ich den Zeichensatz vom ersten bis zum letzen " angezeigt. Ich will aber jeden String der in " einzeln haben.
Vielen Dank!
Progman
03.07.2003, 19:39:41
benutzt kein ereg, benutzt pcre
http://www.php.net/pcre
http://tut.php-q.net/regex.html
Der PCRE Regex sieht so aus
="([^"]+)"=
Was willst du damit machen? Muss dann ggf mit preg_replace arbeiten
bweichel
03.07.2003, 21:20:56
Hallo!
Danke erst mal für die schnelle Antwort.
Also ich möchte damit die Logfiles des Server auslesen.
Ich wollte ursprünglich nach jedem Leerzeichen in den Logs ein ; setzen, damit ich sie nachher problemlos als .csv abspeichern kann und sich das ganze in Excel öffnen läßt.
Dann habe ich aber bemerkt das die Strings in " stehen und sich innerhalt der Anführungszeichen auch Leerzeichen befinden. Und dann wollte ich halt diese Strings mit ereg herausfiltern. Ich wußte aber nicht wie ich das erste und das nächste " nehmen kann. Ich hab immer nur das erste und das letzte " bekommen.
Was macht preg_replace? Ist das zu vergleichen mit ereg_replace?
Wie würdest du das Problem lösen? Ohne Software für Log Analyse... ich will es ja selbst schreiben können.
Gruß Björn
Reicht es nicht schon, jedes " " mit ", " zu ersetzen? Weiß ja nicht, wie das mit der Anzahl Leerzeichen und so aussieht.
bweichel
04.07.2003, 10:40:57
Ja, das hab ich mir auch schon gedacht. Aber die Anführungszeichen stehen nicht immer hintereinander.
Hier ein Beispiel:
66.150.40.66 - - [03/Jul/2003:00:41:59 +0200] "HEAD / HTTP/1.1" 200 0 www.media2be.de "-" "sitecheck.internetseer.com (For more info see: http://sitecheck.internetseer.com)" "-"
Hast du ne Idee?
Danke für die Hilfe!
Naja, so ungefähr sieht mein Log auch aus.
- ich hab zu erst die IP geholt: substr() bis ' - - '
- den Teil entfernt: substr() von ' - - ' bis Ende
- dann die Zeit mit substr() von [ +1 bis ] -1
- den Teil entfernt: substr() von ] bis Ende
- dann Datei und Protokoll und so mit substr() von " +1 bis " -1
- den Teil entfernt: substr() von " bis Ende
- usw.
Was macht preg_replace? Ist das zu vergleichen mit ereg_replace?
preg_replace macht so ungefähr das selbe wie ereg_replace, ist nur um einiges schneller. Ob der Aufbau gleich ist, kann man im Manual nachlesen oder auch hier irgendwo. Ich glaube schon, benutzte ereg_replace bisher nur nie...
Die regulären Ausdrücke sind jedenfalls bei PCRE in der Perl-Syntax, bei ereg irgendwie anders.
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.