Avatar billede sorenriis Nybegynder
22. januar 2005 - 11:02 Der er 3 kommentarer og
1 løsning

Problem med at læse filer

Har lavet følgende script, som skulle åbne en bestemt fil og derefter hive værdierne ud hver gang den møder et "[Race]".

-----
$url="logs/".$filnavn;
$cont = file_get_contents( $url );
$arr = preg_split( "/\[Race\]/s", $cont );
unset( $arr[0] );
$arr = array_unique( $arr );
foreach ( $arr as $trackstat )
{
    $lines = explode( "\r", trim( $trackstat ) );
    foreach ( $lines as $line )
        {
            $var = explode( "=", $line );
            if ( count( $var ) == 2 )
            {
                $key = trim( $var[0] );
                $val = trim( $var[1] );
                    echo "$key = $val<br>";
            }
        }
}
-----

Problemet er at det ikke virker:)
Har en mistanke om at det skyldes at jeg sætter "url'en" forkert for filnavnet sættes rigtigt. Filen eksekveres og skal så lede efter den pågældende fil i undermappen "logs".

Filen der læses (en txt-fil), ser således ud:

[Race]
RaceMode=5
Scene=GAMEDATA\LOCATIONS\Magny-Cours\Magny-Cours.TRK
AIDB=GAMEDATA\LOCATIONS\Magny-Cours\Magny-Cours.AIW
Race Length=0.100
Track Length=4450.9355
Avatar billede sorenriis Nybegynder
22. januar 2005 - 11:18 #1
Og er det muligt at bruge "jokertegn" i den tekst der skal søges efter?

Jeg har f.eks. en header, som hedder [slot???] - hvor ??? er et vilkårligt nummer.
Eksempel:

[Slot000]
Driver=Soren Riis
Vehicle=Lister Storm
Penalty=0
Place=1
Laps=0
RaceTime=DNF
Reason=0

Hvordan får jeg så læst de værdier ind?
Avatar billede sorenriis Nybegynder
22. januar 2005 - 17:21 #2
Jeg har nu løst første problem..

Men logfilen hvor alle de [slot???] fremkommer, volder mig stadigt problemer..

Jeg kan ikke finde ud af at få dem læst ordentligt ind:(
Avatar billede sorenriis Nybegynder
22. januar 2005 - 18:24 #3
<?
function find_yngste_fil( $mappesti ) {
  if ($dh = opendir($mappesti)) {
      $yngst = 0;
      $yngstfil = "";
      while (($file = readdir($dh)) !== false) {
          if( $file!="." && $file!=".." && !is_dir( $mappesti ."/" .$file ) ) {
              $tmp = filemtime ( $mappesti ."/" .$file );
              if( $tmp > $yngst ) {
                  $yngst = $tmp;
                  $yngstFil = $file;
              }
          }
      }
      closedir($dh);
      return $yngstFil;             
  }
}

$filnavn=find_yngste_fil( "logs" );

$url="logs/".$filnavn;
$cont = file_get_contents( $url );
$arr = preg_split( "/\[Slot(.*)\]/s", $cont );
unset( $arr[0] );
$arr = array_unique( $arr );
foreach ( $arr as $trackstat )
{
    $lines = explode( "\r", trim( $trackstat ) );
    foreach ( $lines as $line )
    {
        $var = explode( "=", $line );
        if ( count( $var ) == 2 )
        {
            $key = trim( $var[0] );
            $val = trim( $var[1] );
            // Slet echo og gem i stedet i databasen...
            echo "$key = $val<br>";
        }
    }
}
?>

Det her er hvad jeg har rodet mig frem til indtil videre... Hvad er det lige jeg gør galt?

----
Eksempel på logfil:

[Slot000]
Driver=Claus Juel
Lobby Username=CeeJay
Vehicle=Ferrari 550 Maranello
Penalty=0
Place=1
Laps=24
BestLap=1:34.647
RaceTime=DNF
Reason=0

[Slot001]
Driver=Diego Sartori
Lobby Username=Diego Sartori
Vehicle=Lamborghini Murcielago R-GT
Penalty=0
Place=2
Laps=6
BestLap=1:35.450
RaceTime=DNF
Reason=0
Avatar billede sorenriis Nybegynder
22. januar 2005 - 22:26 #4
oprettet nyt spørgsmål..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester