cr: Richtig suchen?

Hallo,

ich habe ein Problem, bei dem ich mir selbst und ich und google in kombination  auch nicht :(

Folgende Ausgangssituation:

.txt Datei mit Inhalt

12241|blablabla|124812|
64124|etcetcetc|415731|
82478|huhuhuhuh|243724|

Nun öffne ich die txt mit file(), foreach, trim() und explode an den "|".

Nun möchte ich, wenn nach dem inhalt der zweiten spalte oder nur einem teil davon gesucht wird, die gesamte mittlere zeile ausgegeben wird.

also array[1] in der zweiten zeile soll ausgegeben werden, wenn z.b. etc nur gesucht wird

nun hab mit in_array und array_search und strstr schon rumprobiert, aber wie gesagt komm ich nichtz zum ziel....vlt kann mir jemand den schritt auf den richtigen weg zeigen?

vielen dank!

  1. Hi,

    ich habe ein Problem, bei dem ich mir selbst und ich und google in kombination  auch nicht :(

    stimmt das? Der erste Eintrag ist schon ok : diesen meine ich

    Nun öffne ich die txt mit file(), foreach, trim() und explode an den "|".

    Genau in der Reihenfolge? Wie wärs mit einem genauen Beispiel?

    nun hab mit in_array und array_search und strstr schon rumprobiert, aber wie gesagt komm ich nichtz zum ziel....vlt kann mir jemand den schritt auf den richtigen weg zeigen?

    Gibst du gute Beispiel guckst du Lösung von mir;-)

    Timo

    1. stimmt das?

      kann schon sein, ist aber nicht das was ich suche...

      also:

      $datei_loc = file(.txt);

      $usereingabe = $_POST['usereingabe'];
      foreach($datei_loc as $zeile_loc)
      {
       $zeile_loc = trim($zeile_loc);
       $zeile_loc = explode("|",$zeile_loc);
       $suchinhalt = array($zeile_loc[1]);
       if(array_search('$usereingabe',$suchinhalt) !== false)
       {
               ......
      soweit funktioniert das ja auch, aber nur dann, wenn die usereingabe exact dem inhalt der spalte entspricht...also wenn "hasenbraten" in der spalte steht, und der user "hasenbraten" eingibt, funktioniert es, wenn der user aber "hase" sucht leider nicht, und das soll es aber auch...

      hmm...ich bekomm hunger ;-)

      danke für die hilfe!

      1. Hi,

        if(array_search('$usereingabe',$suchinhalt) !== false)
        {
                 ......
        soweit funktioniert das ja auch, aber nur dann, wenn die usereingabe exact dem inhalt der spalte entspricht...also wenn "hasenbraten" in der spalte steht, und der user "hasenbraten" eingibt, funktioniert es, wenn der user aber "hase" sucht leider nicht,

        Dafuer ist array_search nun mal nicht ge(d|m)acht.

        und das soll es aber auch...

        Dann durchlaufe dein Array, und vergleiche dabei mittels geeigneter Stringfunktionen den Inhalt der jeweligen "Spalte" auf die gewuenschte Art von Uebereinstimmung.
        (Und bevor du sofort "und wie?" fragst, schaust du bitte selbst im Manual nach, welche Funktionen sich dafuer anbieten koennten.)

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Dann durchlaufe dein Array, und vergleiche dabei mittels geeigneter Stringfunktionen den Inhalt der jeweligen "Spalte" auf die gewuenschte Art von Uebereinstimmung.
          (Und bevor du sofort "und wie?" fragst, schaust du bitte selbst im Manual nach, welche Funktionen sich dafuer anbieten koennten.)

          => eine  lösung wollte ich nicht, sondern eine hilfe zum weg dahin...und die hab ich gefunden dank deines kurzen kommentars...eregi() macht das was ich will..

          danke und schönen abend

          1. Hallo,

            => eine  lösung wollte ich nicht, sondern eine hilfe zum weg dahin...und die hab ich gefunden dank deines kurzen kommentars...eregi() macht das was ich will..

            autsch, warum mit Elefanten auf Mücken schießen?
            Da hätte strpos() auch schon genügt.

            So long,
             Martin

            --
            Es gibt Dinge, die sind sooo falsch, dass nicht einmal das Gegenteil stimmt.
            1. Hallo,

              Hallo Martin,

              autsch, warum mit Elefanten auf Mücken schießen?
              Da hätte strpos() auch schon genügt.

              naja sicher, aber der rückgabewert "true" ist für mein vorhaben komfortabler, ausserdem erkenne ich als anfänger da keinen unterschied...was unterscheidet, neben der etwas anderen ausgabe der ergebnisse, beide funktionen?

              ach und hast du schon das motherboard bekommen?dieses stromsparteil? wenn ja wieviel strom frisst es denn wirklich?

              danke und grüße

              1. Hallo,

                autsch, warum mit Elefanten auf Mücken schießen?
                Da hätte strpos() auch schon genügt.
                naja sicher, aber der rückgabewert "true" ist für mein vorhaben komfortabler, ausserdem erkenne ich als anfänger da keinen unterschied...was unterscheidet, neben der etwas anderen ausgabe der ergebnisse, beide funktionen?

                im Wesentlichen die Tatsache, dass die Regex-Engine *wesentlich* komplexer ist als eine einfache String-Suche - und deshalb auch deutlich mehr Rechenzeit braucht.

                ach und hast du schon das motherboard bekommen?dieses stromsparteil?

                Ja - aber erst für einen kurzen Systemcheck "am Saft" gehabt.

                wenn ja wieviel strom frisst es denn wirklich?

                Ich habe einen kleinen DC/DC-Adapter zum Testen benutzt, und für die eigentliche Stromversorgung ein Netzteil mit 12V/2.5A max. (ohne HDD und/oder CD-ROM). Das heißt also, dass man im späteren System mit 20..30W auskommt, sobald man die HDD abschalten lässt.
                Immerhin: Der große Kühlkörper sitzt auf der Atom-CPU, und die braucht selbst bei voller Aktivität weniger als 5W.

                Gute Nacht erstmal,
                 Martin

                --
                Success should be measured not so much by the position that one has reached in life,
                but by the obstacles one has overcome while trying to succeed.
      2. Dann wollen wir mal,

        $datei_loc = file(.txt);

        Du willst also ein Array haben

        $usereingabe = $_POST['usereingabe'];

        Ein Besucher oder du nutzt also ein Formularfeld zur Abfrage

        foreach($datei_loc as $zeile_loc)

        Jetzt gehst du der Reihe nach das Array durch

        {
        $zeile_loc = trim($zeile_loc);

        Warum trimst du, wenn dich eh nur der mittlere Wert interessiert?

        $zeile_loc = explode("|",$zeile_loc);

        Warum wandelst du jetzt jeden String in ein Array um?

        $suchinhalt = array($zeile_loc[1]);
        if(array_search('$usereingabe',$suchinhalt) !== false)
        {

        Wenn also nicht gefunden, dann willst du irgendwas.....

        Jetzt stellt sich mir eine Frage. Was machst du wenn 2 Zeilen fast gleich sind und damit...., aber stimmt ja interessiert dich ja nicht, weil du ja im Grunde genommen nur wissen willst ob in dem mittleren Bereich, egal welche Zeile, irgendwo dein Suchwort auftaucht.

        Jetzt wäre noch zu wissen wie der Inhalt der anderen Spalten ist, so wie in deinem Beispiel? Dann wäre ja egal ob mittlere Spalte oder alles, also gehe ich mal davon aus, das es schon wichtig ist nur den Inhalt der mittleren Spalte, sonst bräuchtest du ja nicht mal die Schleife.

        Dann ist alles was Du brauchst stristr oder stripos und explode kannst du vergessen.

        Timo