Ankündigung

Einklappen
Keine Ankündigung bisher.

Verständnisfrage zur Funktion strpos

Einklappen

Neue Werbung 2019

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

  • Verständnisfrage zur Funktion strpos

    Hallo miteinander,

    ich arbeite bereits seit einigen Jahren mit PHP, aber immer wieder stoße ich dann doch wieder auf neue Probleme, die Zeit rauben und ich auch nicht wirklich verstehe.

    Aktuell arbeite ich an einem eigentlich doch sehr einfach gestrickten Projekt. Ich möchte Datensätze aus einer Textdatei einlesen, diese werden nach Bereichen gefiltert und dann weiter für eine MySQL-DB verarbeitet. Um die Bereiche der einzelnen Datenblöcke zu filtern, habe ich diese in Anfang- und End-Tags gesetzt - Bsp.: #0 Name #00
    Die Tag-Aufzählung zieht sich dann bis #10 xxx #1010.

    Beim Einlesen der jeweiligen Zeile kommen bei einer while-Schleife folgende Abfrage und Funktion zum Einsatz:

    PHP-Code:
     if (isset($details[$y][$x]) && strpos($details[$y][$x], "#1") !== false
    Beim Schleifendurchlauf von '#1' bis '#9' verläuft die Filterung ohne Probleme, bei

    PHP-Code:
     if (isset($details[$y][$x]) && strpos($details[$y][$x], "#10") !== false
    besteht nun das Problem, dass beim Vergleich zusätzlich zum Tag '#10', auch wieder der Tag '#1' als korrekte Suchparameter erkannt wird und somit beide Werte am Ende ausgegeben werden.

    Ich komme aktuell nicht wirklich weiter und denke im Grunde auch, dass es die richtige Weg ist. Evtl. bin ich aktuell es betriebsblind und bedanke mich jetzt schon mal für alle Antworten!


  • #2
    Dann zeige mal die 2 Werte von $details[$y][$x] bei denen mit "#10" auch #1 erkannt wird.

    Kommentar


    • #3
      Danke für die schnelle Antwort!

      Ich lasse mir immer die jeweilige Ergebnisse incl. vorangesetztem Label zur besseren Übersicht ausgeben. Nur das Label aus der ersten Filterung ('#1') wird bei der letzten Ausgabe bei der Stringkettensuche '#10' mit ausgegeben, aber ohne wirklichem Variablenwert. Ich denke, ich muss noch einmal meine Schleifen- und Zählerfunktion prüfen. Dennoch müsste bei der ungewollten Ausgabe des Labels eigentlich ein
      HTML-Code:
      <br/>
      mit eingefügt werden, passiert aber auch nicht. Aber gut, ich werde nun noch ein paar weitere Kontrollausgaben einsetzen und hoffe, dass ich diesem logischen Fehler irgendwie auf die Schliche komme...
      Ich werde auf jeden Fall über weitere Ergebnisse und nach natürlich auch, wenn ich dann selbst die Lösung gefunden habe!

      Kommentar


      • #4
        Zitat von singmar Beitrag anzeigen
        Danke für die schnelle Antwort!

        Ich lasse mir immer die jeweilige Ergebnisse incl. vorangesetztem Label zur besseren Übersicht ausgeben. Nur das Label aus der ersten Filterung ('#1') wird bei der letzten Ausgabe bei der Stringkettensuche '#10' mit ausgegeben, aber ohne wirklichem Variablenwert. Ich denke, ich muss noch einmal meine Schleifen- und Zählerfunktion prüfen. Dennoch müsste bei der ungewollten Ausgabe des Labels eigentlich ein
        HTML-Code:
        <br/>
        mit eingefügt werden, passiert aber auch nicht. Aber gut, ich werde nun noch ein paar weitere Kontrollausgaben einsetzen und hoffe, dass ich diesem logischen Fehler irgendwie auf die Schliche komme...
        Ich werde auf jeden Fall über weitere Ergebnisse und nach natürlich auch, wenn ich dann selbst die Lösung gefunden habe!
        Kaminbausatz meint, du sollst uns die Werte zeigen, damit wir es nachvollziehen können.

        Kommentar


        • #5
          singmar : Es ist doch klar, wenn du nur nach "#1" im Text suchst auch "#10..", "#11.." usw. gefunden werden. Du mußt also ein weiteres Zeichen mit in deine Suchmaske nehmen. Hier bietet sich ein Space an wenn ich das richtig sehe.
          z.B.
          PHP-Code:
          strpos($details[$y][$x], "#1 "
          Besser sind noch reguläre Ausdrücke womit Strings wie "#10 name #1010" komplett identifiziert werden können.


          PHP-Klassen auf github

          Kommentar


          • #6
            Und trotzt

            (..) einigen Jahren mit PHP (..)
            bitte in zukunft das announce lesen und im richtigen unterforum posten !
            so you are welcome

            Kommentar


            • #7
              [MOD: verschoben von PHP-Fortgeschritten]
              Competence-Center -> Enjoy the Informatrix
              PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

              Kommentar


              • #8
                Hallo und sorry, dass ich mit meiner Frage im falschen Forum gelandet bin, meine letzte Anmeldung und Benutzung eines Forums ist doch schon etwas länger her - und dazu kam die Verzweiflung

                Und was soll ich sagen, natürlich war ich betriebsblind! Ist ja klar, wenn das Skript nach der Zeichenkette '#1', wird es bei '#10' natürlich auch fündig.

                jspit, besten Dank, dass mit space hat wunderbar funktioniert, aber denke auch, die Arbeit mit den regulären Ausdrücken wäre noch optimaler!

                Problem gelöst und Danke an alle Helfer!

                Kommentar

                Lädt...
                X