Leerzeichen im String

Lapachon

Mitglied
Hi!

Ich habe folgendes Problem!

Ich habe einen String der in etwa so aussieht:

1100167107.664 333 192.168.140.33 TCP_MISS/200 1208 GET http://www.crashday-game.de/img/lang_1.gif - DIRECT/212.227.127.91 image/gif

Ich möchte jetzt diesen String so zerlegen dass ich den String in verschiedene Kategorien teilen kann. Deshalb möchte ich den String nach jedem Leerzeichen teilen. Ich habe es soweit geschaft, dass ich den String teile, aber leider nicht da wo ein Leerzeichen ist.

Hier der Code:

PHP:
$timestamp = substr($logfile[$i],0,14);
$num1 = substr($logfile[$i],strpos($logfile[$i]," ")+0,strpos($logfile[$i]," ")-6);
$ip = substr($logfile[$i],strpos($logfile[$i]," ")+7,strpos($logfile[$i]," ")+2);
$misshit = substr($logfile[$i],strpos($logfile[$i],"T")+0,strpos($logfile[$i]," ")+0);

Jetzt teilt er den String so ab:

1100167107.664
333
192.168.140.33
TCP_MISS/200 1

Bei "TCP_MISS/200 1" liegt das Probelm! Er sollte eigentlich nach 200 einen Umbruch machen.

Weis jemand rat?

Danke

Lapachon
 
Schau dir mal split() und/oder explode() an.
Damit solltest du den String recht einfach und komfortabel teilen können.

im Gegensatz zu substr()
 
Danke für eure Hilfe! explode sieht schon atraktiv aus für meine Zwecke, aber es funkt nicht so wie ich es will.

PHP:
$timestamp 	= substr($logfile[$i],explode(" ", $logfile[$i]),explode(" ", $logfile[$i]));

Er gibt mir aber nur "1" zurück, obwohl er mir 1100167107.664 zurück geben sollte.

Was habe ich den falsch gemacht?
 
Du jagst am besten die Ganze Zeile durch explode().
$arr = explode(' ',$zeile);
danach hast du dann
$arr[0] = '1100167107.664';
$arr[1] = '333';
$arr[2] = '192.168.140.33';
$arr[3] = 'TCP_MISS/200';
$arr[4] = '1208';
$arr[5] = 'GET';
$arr[6] = 'http://www.crashday-game.de/img/lang_1.gif';
$arr[7] = '-';
$arr[8] = 'DIRECT/212.227.127.91 image/gif';

Danach bekommst du alles in einem Array zurück und kannst es einfach weiterverarbeiten.
 
Ja super, danke Lapsus! Das ganze hat jetzt funktioniert mit einem Leerzeichen, aber was ist , wenn beim ersten Teil des Strings zwischen "1100167107.664" und "333" 2, 3 oder 4 Leerzeichen sind? Ich wollte es so probieren, hat aber leider nicht geklappr.

PHP:
$arr 	= explode(" " || "  ",$logfile[$i]);

Danke für die Hilfe!
 
explode ist hier recht einfach gestrickt. Wenn du einen Kompliziertere Geschichte mit Fallunterscheidungen optionalen Zeichen etc. haben willst, schau dir split() an. Da kann man an Hand einer Regular Expression zerlegen. Damit kriegst du so ziemlich alles hin. (wenn du mit RegExp umgehen kannst ;) )
 
Zurück