PHP: Zeilen einlesen und modifizieren

  • Zitat

    Original geschrieben von Teddie_Neubert



    > Der Lösungsansatz ist prima, und nun kommt die Gemeinheit:
    > Die Selektionskriterien sind leider nicht statisch, d. h. der
    > aufrufende User gibt diese in einer von ihm gewählten
    > Reihenfolge und in beliebiger Länge beim Aufruf mit.


    schön, dann gibt's halt zwei verschachtelte Schleifen.


    > Wir haben dann wohl ... ein Array mit Selektionskriterien,


    Ich fuerchte, wir haben erstmal nur einen String, der zwischen den Kriterien, sowie vorne und hinten ueberfluessige Leerzeichen enthalten kann. Außerdem teilweise Kleinbuchstaben, obwohl eigentlich grosse gesucht sind.


    Schau mal, ob das passt:


    <?php


    # Die Beispieldaten als langer String:


    $daten="14:18 aktuelle_Uhrzeit\r\n";
    $daten.="14:19 S6 Gross Karben 104 P\r\n";
    $daten.="14:19 S1 Offenbach(Main)Ost 102 P\r\n";
    $daten.="14:19 DNR81272 Koenigstein(Taunus) 22 P\r\n";
    $daten.="14:19 IC2391 Salzburg Hbf 101 P\r\n";
    $daten.="14:22 S2 Niedernhausen(Ts) 103 P\r\n";
    $daten.="14:22 S7 Goddelau-Erfelden 2 P\r\n";


    # Die Suche (auch mit unsinnigen Leerzeichen rechnen):


    $sucheingabe=' S IC ';


    # die unsinnigen Leerzeichen entfernen (vorne und hinten)
    # bzw durch ein einzelnes ersetzen (Mitte):
    $sucheingabe=ltrim(rtrim(preg_replace('/ +/',' ',$sucheingabe,-1)));


    # Den Suchstring in ein Feld wandeln:
    $suche=explode(' ',$sucheingabe);


    # Die Daten in ein Feld wandeln:
    $daten=explode("\r\n",rtrim($daten));


    # die eigentliche Suchfunktion:
    $ergebnis='';
    foreach($daten as $d)
    {
    $a=split(' ',$d,3);
    $a=$a[1];
    if (preg_match('/aktuelle_/i',$a)) { $ergebnis.=$d."\r\n"; }
    else
    {
    $gefunden=0;
    foreach($suche as $s)
    {
    if (preg_match("/^$s/i",$a)) { $gefunden=1; }
    }
    if ($gefunden) { $ergebnis.=$d."\r\n"; }
    }
    }
    echo $ergebnis;
    ?>



    Deine DOS-Lösung sieht so kurz und elegant aus, wie zuverlaessig funktioniert die denn? Sucht die wirklich an der richtigen Stelle, oder findet man bei der Suche nach "re" ausser den Regionalexpressen auch alle Zuege nach Regensburg?


    Gruß, Wolfgang

  • Hallo Wolfgang, ich danke Dir mit Hofknicks,
    der Job funktioniert supergut, sogar *schmunzel* zu gut.
    Wenn ich das mal verstanden habe muss ich es etwas abspecken.


    Warum ?


    Das erklärt sich mit dem Findstr-Befehl.
    Nimm an Du hättest eine reine Textdatei mit dem bekannten Inhalt.
    Findstr sucht innerhalb jeder Zeile das Vorkommen des Suchstrings und gibt im Gefunden-Fall die Zeile aus (Methode = von CR/LF bis CR/LF).
    Das Verhalten (Char-case und "not") kann man mit Schaltern beeinflussen.


    Im konkreten Fall suche ich gross-klein-getreu, daraus folgt, dass bei Suche nach RE Regensburg nicht kommt.


    Aber schmunzeln musste ich schon, weil mir klar war, dass bei intensiver Beschäftigung mit dem Thema diese Frage kommen musste, insofern danke ich Dir auch hierfür.


    Die obige - zugegebenermassen etwas "lässige" Methode hat noch einen durchaus beabsichtigten Seiteneffekt, nämlich
    wenn einer nur in einen bestimmte Richtung will und er kennt die Zielbahnhöfe der in diese Richtung fahrenden Züge, dann erklärt er einfach z. B. von Frankfurt aus gesehen nach Süden = Stuttgart Muenchen Innsbruck (ja, ich weiss, es müsste dann auch "not Nuernberg" geben).


    Und wozu das alles ?
    Wenn fertig, dann muss ich noch wen finden, der das auf seinem Server mitlaufen lässt und dann kann man per I-Mode und evtl. später (muss ich noch lernen) auch per WAP die Verspätungen eines Bahnhofs (über eine Bahnhofsnummer) vom Handy aus abfragen.
    Die ganze Filterei mache ich nur, weil die mobilen Datenkosten sch....teuer sind ( 1 GB = ca 10.000 TEuro ).
    Und das alles nur deshalb, weil die Bahner die Zähne nicht auseinanderkriegen :-((
    Gruss Teddie

  • Hallo und Danke an alle, die mir geholfen haben.


    Hier
    http://www.telefon-treff.de/sh…?postid=336693#post336693
    mehr zum Ergebnis Eurer Bemühungen.


    Bis neulich Teddie

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!