mehrfachsuche mit preg_match

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

  • mehrfachsuche mit preg_match

    eigentlich nichts komplexes:

    PHP-Code:
    $file file_get_contents('test.txt');
    $search "showthread.php=s";

    if (
    preg_match("(^[$search]*$)",$file,$match))
    {
     echo 
    $match[0];
    }
    else
     {
      echo 
    "not found.</br>";

    er soll in test.txt in den jeweiligen zeilen auf $search prüfen. $search kommt zweimal dort vor. sobald ich aber $match[1] angebe gibt es eine fehlermeldung. ich hatte mich nochmal über die modifier dieser funktion informiert, womöglich lag dort der fehler. jetzt beschwert er sich und will das "$" nicht akzeptieren.

    von anfang bis ende des strings soll auf mehrfaches vorhandensein des suchstrings eingegangen werden.

  • #2
    If matches is provided, then it is filled with the results of search. $matches[0] will contain the text that matched the full pattern, $matches[1] will have the text that matched the first captured parenthesized subpattern, and so on.
    Jetzt müsste man (Du) wissen, was 'first captured parenthesized subpattern' ist. Zu beachten ist, dass deine äussern (...) die delimiters für das reguläre pattern sind und nicht etwa Speicherklammern. Für deine Absichten siehe auch das php manual unter preg_match() und preg_match_all() .

    Da du jede Zeile einzeln absuchen willst, braucht es den modifier m.
    Zuletzt geändert von nix_wie_weg; 10.08.2006, 08:21.

    Kommentar


    • #3
      ja, ok. es funktioniert aber nicht. er akzeptiert nicht die modifier...

      wie genau muss denn die preg_match zeile denn aussehen? die benötigten infos hab ich schließlich angegeben.

      Kommentar


      • #4
        wozu eigentlich preg_match? was hast du vor?
        zählen wie of $search in $file vorkommt? $search in $file ersetzen?
        search ist ein ganz normaler string - wozu reguläre ausdrücke?

        Kommentar


        • #5
          er soll zählen wie oft der suchstring vorkommt und dann jeweils sobald gefunden einen bestimmten code ausführen.

          strstr oder strpos sucht nur solange bis der erste treffer erfolgt ist.

          einfach eine for schleife mit einer if anweisung zu setzen ist auch ne möglichkeit:

          PHP-Code:
           for ($x 0;$x 100;$x++)
           if (
          $file[$x] == $search)

           
          $s_found strstr($file,$search);

          echo 
          restlicher code 
          dann gibt er aber nichts aus. hinzukommt er soll bis zum ende der gefundenen zeile lesen, wozu strstr genau richtig ist, jedoch stoppt die funktion wie gesagt beim ersten treffer.

          Kommentar


          • #6
            Original geschrieben von lonestar
            er soll zählen wie oft der suchstring vorkommt und dann jeweils sobald gefunden einen bestimmten code ausführen.
            zählen: substr_count()
            was meinst du mit "einen bestimmten code ausführen"? - kann man eventuell auch anders lösen.

            Kommentar


            • #7
              naja, substr_count ist in sofern interessant, da ich eine bestimmte anzahl des gesuchten strings brauche - danke für den tipp - aber das problem war eben den code (string zeile bearbeiten und ausgeben) arbeiten zu lassen, sobald ein treffer erfolgt ist. wenn die ausgabe kam, wurde immer nur die *eine* zeile ausgegeben.

              jetzt habe ich einfach eine foreach schleife ans ende gesetzt und die gesuchten zeilen ein zweites mal mit echo ausgegeben. es wird angezeigt und die stringbearbeitung, die du hier nicht siehst, mitbedacht. ich weis zwar nicht wirklich warum...

              PHP-Code:
                foreach ($a_file as $s_file)
              {
                    if (
              strpos($s_file,"showthread.php=s"))
                   {
                echo 
              $s_file."</br>";
                   }

              Zuletzt geändert von lonestar; 13.08.2006, 17:14.

              Kommentar


              • #8
                kleine anmerkung:
                ich weiß nicht, ob es möglich ist, dass der gesuchte string als erstes vorkommt.
                aber in diesem fall liefert strpos() 0 zurück!

                Kommentar

                Lädt...
                X