Ankündigung

Einklappen
Keine Ankündigung bisher.

strpos: Problem bei Abgleich von Daten inTextdatei

Einklappen

Neue Werbung 2019

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

  • strpos: Problem bei Abgleich von Daten inTextdatei

    Hallo Leute,

    ANTON und ANTONIA machen Probleme!
    Ich hoffe mal, Ihr könnt mir weiterhelfen. Mein Script liest eine Textdatei (Usernamen und IDs) per file() in ein Array, dieses wird dann mittels einer FOR EACH-Schleife durchlaufen:

    PHP-Code:
    $datei "userdata.txt";
    $array file($datei);

    foreach(
    $array as $element) {

      if ( 
    strpos ($element$username)) {

      list (
    $id$username2) = explode("|"$element);

      
    $user $id.".txt"
    Wie erwähnt: $username=> ANTON wird durch strpos ignoriert, lautet der $username=> ANTONIA, so findet strpos den Usernamen in $element. Übrigens passiert das nicht mehr, wenn ANTON mit Zahlen kombiniert wird (z.B. anton1).

    Wer kann mir weiterhelfen, ich weiß grade nicht, wie dieses Problemchen (ein ziemlich großes!) angegangen werden sollte.


    Danke schonmal!


  • #2
    Zitat von Sealion Beitrag anzeigen
    Wie erwähnt: $username=> ANTON wird durch strpos ignoriert, lautet der $username=> ANTONIA, so findet strpos den Usernamen in $element.
    Das ist höchst unwahrscheinlich.


    Offenbar hast du einfach nicht berücksichtigt, wie der Rückgabewert von strpos zu interpretieren ist, um „kein Treffer“ von „Treffer an Position 0“ zu unterscheiden.

    Kommentar


    • #3
      Hallo! Ja, kann sein : )
      Was sollte ich denn anders machen, damit ANTON und ANTONIA ihr Profil aufrufen können... ich steh' jetzt genau so auf dem Schlauch wie vor deinem Posting, sorry.

      Und, zweitens: "höchst unwahrscheinlich" heißt in diesem meinem Fall: Das gezeigte PHP Script findet mittels strpos bei Übergabe der Variable $username => ANTON ebenso wie auch bei Übergabe von $username => ANTONIA: ANTONIA. Ist so. Warum das so reagiert, weiß ich ja grad' nicht...

      Kommentar


      • #4
        Ok...

        der Schlauch ist geplatzt. Habe alles gelöscht, der Server ist abbestellt und morgen geht's Punkt 8.00 zum AA. Ich mach' das nicht mehr mit.

        Schönen Tag noch.










        PS: ok, Chris hatte irgendwie Recht...

        Cheers, danke!

        Kommentar


        • #5
          nimm statt strpos substr_count
          > PHP: substr_count - Manual
          Dazu solltest du einen begrennzer bei den Namen einbauen, weil du bei Anton bei "anton" und "antonia" was findest. .. also z.B. in deiner userliste:

          id|#ANTON#
          id|#ANTONIA#
          suchen tust du dann so:
          PHP-Code:
          $datei "userdata.txt"
          $array file($datei); 

          foreach(
          $array as $element) { 
            
          $search_user strtoupper($username); // die function substr_count is case sensitive - deswegen alle Buchstaben in grossschrift machen
            
          $search_user '#'.$search_user.'#';
            if ( 
          substr_count ($element$search_user)) { 

            list (
          $id$username2) = explode("|"$element); 

            
          $user $id.".txt"

          Kommentar


          • #6
            wieso substr_count()?

            Deine ganze Suche ist etwas seltsam, dann kann ich mich ja einfach 1|ANTON nennen um das Profil von Anton mit der ID=1 auszulesen, gleiches gilt für den normalen Anton, der Antonia auslesen kann...

            PHP-Code:
            <?php
            $findUsername 
            "ANTON";
            $filename "user.txt";
            foreach (
            file($filename) as $row) {
              
            $row rtrim($row); // Besonderheit von file() ausbügeln
              
            list ($id$username) = explode("|"$row2);
              if (
            $username == $findUsername) {
                
            // Treffer
              
            }
            }
            ?>
            "Mein Name ist Lohse, ich kaufe hier ein."

            Kommentar


            • #7
              Zitat von Sealion Beitrag anzeigen
              Das gezeigte PHP Script findet mittels strpos bei Übergabe der Variable $username => ANTON ebenso wie auch bei Übergabe von $username => ANTONIA: ANTONIA. Ist so. Warum das so reagiert, weiß ich ja grad' nicht...
              Weil du nur fragst, ob das zu durchsuchende mit dem gesuchten anfängt. Und natürlich fängt "ANTONIA" mit "ANTON" an.

              Kommentar

              Lädt...
              X