Einlesen einer E-Mail

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Einlesen einer E-Mail

    Hallo,

    mit folgendem Teil eines Scriptes lese ich eine E-Mail aus um die Daten später in die Datenbank zu schreiben:

    PHP-Code:
    function auswerten($fname$content)
    {
      
    $content explode("\n"$content);
      
    $zeilen count($content);

      
    $liste substr($content[22],5,17);
      
    $zeile_22 $content[$zeilen -5]; 
      
    $zeile_23 $content[$zeilen -4]; 
      
    $zeile_24 $content[$zeilen -3];
      
    $zeile_25 $content[$zeilen -2];
      
    $zeile_26 $content[$zeilen -1];
      
      
    $datum_array explode(":",$zeile_22);
      
    $liste_data explode(".",$datum_array[1]);
      
      
    $jahr $liste_data[0];
      
    $monat $liste_data[1];
      
    $tag $liste_data[2];
      
    $stunde $liste_data[3];
      
    $minute $liste_data[4];
      
    $sekunde $liste_data[5];
      
      
    $jahr1 $jahr+2000;
      
      
    $sp1_array explode(":",$zeile_24);
      
    $sp1_player_data explode(";",$sp1_array[1]);
      
      
    $spieler1 $sp1_player_data[0];
      
    $spielpunkte1 $sp1_player_data[1];
      
    $gewonnen1 $sp1_player_data[2];
      
    $verloren1 $sp1_player_data[3];
      
    $gesamt1 $sp1_player_data[4];
      
      
    $sp2_array explode(":",$zeile_25);
      
    $sp2_player_data explode(";",$sp2_array[1]);
      
      
    $spieler2 $sp2_player_data[0];
      
    $spielpunkte2 $sp2_player_data[1];
      
    $gewonnen2 $sp2_player_data[2];
      
    $verloren2 $sp2_player_data[3];
      
    $gesamt2 $sp2_player_data[4];
      
      
    $sp3_array explode(":",$zeile_26);
      
    $sp3_player_data explode(";",$sp3_array[1]);
      
      
    $spieler3 $sp3_player_data[0];
      
    $spielpunkte3 $sp3_player_data[1];
      
    $gewonnen3 $sp3_player_data[2];
      
    $verloren3 $sp3_player_data[3];
      
    $gesamt3 $sp3_player_data[4];
      
      echo 
    "<br><br>";
      
      
    // Nick, Spielpunkte, Gewonnen, Verloren, Gesamt
      
    $a[0]=array($spieler1$spielpunkte1$gewonnen1$verloren1$gesamt1);
      
    $a[1]=array($spieler2$spielpunkte2$gewonnen2$verloren2$gesamt2);
      
    $a[2]=array($spieler3$spielpunkte3$gewonnen3$verloren3$gesamt3);

      foreach(
    $a as $v) {$s0[]=$v[0]; $s1[]=$v[1]; $s2[]=$v[2]; $s3[]=$v[3]; $s4[]=$v[4];}

      
    array_multisort($s4SORT_DESCSORT_NUMERIC
                      
    $s1SORT_ASCSORT_REGULAR
                      
    $s2SORT_ASCSORT_REGULAR
                      
    $s3SORT_ASCSORT_REGULAR,
                      
    $s0SORT_ASCSORT_REGULAR$a); 
    Und hier mal eine Beispiel-E-Mail die ausgelesen wird:

    Spielergebnis 05.12.2013
    Ergebnis des Turnierspiels gespielt von Wolle3001 am 05.12.13.
    ------------------------------------------------------------------
    Von den 36 Einzelspielen wurden 5 eingepasst.
    ------------------------------------------------------------------
    schluse gewinnt 7 und verliert 6 Spiele.
    Er/Sie hat am Schluss 11 Spielpunkte.
    Das entspricht 221 Turnierpunkten.
    ------------------------------------------------------------------
    Sting2 gewinnt 4 und verliert 2 Spiele.
    Er/Sie hat am Schluss -25 Spielpunkte.
    Das entspricht 395 Turnierpunkten.
    ------------------------------------------------------------------
    Wolle3001 gewinnt 10 und verliert 2 Spiele.
    Er/Sie hat am Schluss 445 Spielpunkte.
    Das entspricht 1165 Turnierpunkten.
    ------------------------------------------------------------------
    Diese Spieler haben gespielt:
    schluse
    Sting2
    Wolle3001
    ------------------------------------------------------------------
    ##ID:13.12.04.23.00.32
    ##DET:Sting2;36;5
    ##SP1:schluse;11;7;6;221
    ##SP2:Sting2;-25;4;2;395
    ##SP3:Wolle3001;445;10;2;1165
    Jetzt gibt es aber User die eine Signatur mit der E-Mail mitschicken, damit kommt das Script aber nicht klar, da es scheinbar die Zeilen von unten ausliest, und dann falsche Werte in die Datenbank geschrieben werden.
    Von Oben ist die E-Mail immer gleich aufgebaut und die Zeilen bleiben da immer gleich-

    Wie kann ich das Script umschreiben, damit die Zeilen von oben an gezählt und ausgelesen werden?


    LG Sven

  • #2
    Hallo Sven,

    Dein Problem der Zeilenauswertung liegt hier:

    Code:
    [COLOR=#000000][COLOR=#0000CC]$zeile_22 [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]$content[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]$zeilen [/COLOR][COLOR=#006600]-[/COLOR][COLOR=#0000CC]5[/COLOR][COLOR=#006600]];  
    $[/COLOR][COLOR=#0000CC]zeile_23 [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]$content[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]$zeilen [/COLOR][COLOR=#006600]-[/COLOR][COLOR=#0000CC]4[/COLOR][COLOR=#006600]];  
    [/COLOR][COLOR=#0000CC]$zeile_24 [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]$content[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]$zeilen [/COLOR][COLOR=#006600]-[/COLOR][COLOR=#0000CC]3[/COLOR][COLOR=#006600]]; 
    [/COLOR][COLOR=#0000CC]$zeile_25 [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]$content[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]$zeilen [/COLOR][COLOR=#006600]-[/COLOR][COLOR=#0000CC]2[/COLOR][COLOR=#006600]]; 
    [/COLOR][COLOR=#0000CC]$zeile_26 [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]$content[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]$zeilen [/COLOR][COLOR=#006600]-[/COLOR][COLOR=#0000CC]1[/COLOR][COLOR=#006600]]; [/COLOR][/COLOR]
    Da die Größe von $zeilen ja variable sein kann, solltest Du auf die gewünschten Zeilen nicht in Abhängigkeit von $zeilen zugreifen:

    Code:
    [COLOR=#000000][COLOR=#0000CC]$zeile_22 [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]$content[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]21[/COLOR][COLOR=#006600]];  
    [/COLOR][COLOR=#0000CC]$zeile_23 [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]$content[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]22[/COLOR][COLOR=#006600]];  
    [/COLOR][COLOR=#0000CC]$zeile_24 [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]$content[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]23[/COLOR][COLOR=#006600]]; 
    [/COLOR][COLOR=#0000CC]$zeile_25 [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]$content[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]24[/COLOR][COLOR=#006600]]; 
    [/COLOR][COLOR=#0000CC]$zeile_26 [/COLOR][COLOR=#006600]= [/COLOR][COLOR=#0000CC]$content[/COLOR][COLOR=#006600][[/COLOR][COLOR=#0000CC]25[/COLOR][COLOR=#006600]]; [/COLOR][/COLOR]
    LG
    Markus

    Kommentar

    Lädt...
    X