textdatei auslesen mal anders

bloody

Mitglied
Also, ich hab hier eine Textdatei die "ganz normal" ausgelesen werden soll. Meine TxT sieht so aus:

Code:
16.07.2003 19:20:39 John / Sniper / Desert Eagles
16.07.2003 19:20:44 Dutch / John / FN Minimi
16.07.2003 19:20:51 John / Sniper / Desert Eagles
16.07.2003 19:21:06 Sniper / John / FN Minimi
16.07.2003 19:21:14 Sniper / John / USSOCOM

Das ist eine Log-Datei von dem Spiel "Soldat" vielleicht kennt das ja jemand von euch, naja aufjedenfall würde ich gerne Stats dafür erstellen und deshalb würde ich gerne von euch wissen, wie ich jede Zeile nur NACH der Uhrzeit auslese und vorallem, wie ich die einzelnen Namen so speicher, dass ich sie später wieder per PHP ausgeben kann.
 
im prinzip mit substr

PHP:
$inzeile = deine zeile aus dem textfile
$datum = substr($inzeile,0,10);
$zeit = substr($inzeile,10,18);
$rest = substr($inzeile,18);
$user = explode("/",$rest);
echo $user[0]." ".$user[1];
 
ich weiß zwar nich was du mit nach der uhrzeit auslesen meinst, aber die funktion gibt ein array mit den informationen aus einer logdatei von soldat zurück.
eigentlich ist es nur eine weiterführung von dem was memlager gepostet hat.

PHP:
function soldat_log($file) {
  $file = file($file);
  for ($i=1;$i<count($file);$i++) {
    $mdy = substr($file[$i],0,10);
    $mdy = explode(".",$mdy);
    $hms = substr($file[$i],11,19);
    $hms = explode(":",$hms);
    $rest = substr($file[$i],20);
    $rest = explode(" / ",$rest);
    $timestamp = mktime($hms[0],$hms[1],$hms[2],$mdy[1],$mdy[0],$mdy[2]);
    $frags[$i-1]['time'] = $timestamp;
    $frags[$i-1]['killer'] = $rest[0];
    $frags[$i-1]['killed'] = $rest[1];
    $frags[$i-1]['weapon'] = @$rest[2];
  }
  return $frags;
}
 
ich würde nicht mit substring arbeiten da ich mir nicht sicher wäre ob das datum immer mit zwei 10 ziffern geschrieben wird

17.07.2003 <-- 10zeichen
1.1.2004 <-- 8 zeichen

@septeracore: file(); ist nur praktisch wenn die files klein sind
aber da so ne logfile durchaus größer werden kann würde ich mit fopen arbeiten

PHP:
<?php
function soldat_log($file) {
  $fp = fopen($file, "r");
  $data = array();
  while(!feof($fp)) {
    $line = fgets($fp, 512);
    list($info, $weapon, $team) = explode(" / ", $line);
    list($datum, $uhrzeit, $nick) = explode(" ", $info);
    $data[] = array($datum, $uhrzeit, $nick, $weapon, $team);
  }
  $data = rsort($data);
  return($data);
}
?>

das sollte dir eigentlich weiterhelfen
 
Dieses substr- und explode-Rumstochern ist doch alles Mist. Mit einem einigermaßen anständigen regulären Ausdruck ist doch alles viel einfacher:
[color="2c2c8c"]
&nbsp;&nbsp;<?php
&nbsp;&nbsp;&nbsp;&nbsp;$daten_alt = array(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"16.07.2003 19:20:39 John / Sniper / Desert Eagles",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"16.07.2003 19:20:44 Dutch / John / FN Minimi",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"16.07.2003 19:20:51 John / Sniper / Desert Eagles",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"16.07.2003 19:21:06 Sniper / John / FN Minimi",
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"16.07.2003 19:21:14 Sniper / John / USSOCOM"
&nbsp;&nbsp;&nbsp;&nbsp;);
&nbsp;&nbsp;&nbsp;&nbsp;foreach($daten_alt as $string) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;preg_match("/(.*)[\s](.*)[\s](.*)[\s][\/][\s](.*)[\s][\/][\s](.*)/", $string, $matches);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$daten['datum'][] = $matches[1];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$daten['zeit'][] = $matches[2];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$daten['x1'][] = $matches[3];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$daten['x2'][] = $matches[4];
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$daten['x3'][] = $matches[5];
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;foreach($daten as $daten_kategorie=>$daten_detailliert) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach($daten_detailliert as $schluessel=>$wert) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo("\$daten['".$daten_kategorie."'][".$schluessel."] = \"".$wert."\";<br />");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;echo("<p></p>");
&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;?>
[/color]
 
Zurück