preg_replace ersetzt immer mit dem ersten gefundenen Ausdruck :(

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • preg_replace ersetzt immer mit dem ersten gefundenen Ausdruck :(

    Servus,

    Folgendes Problem:

    Ich gehe mit einer Schleife durch die Ergebnisse einer RegEx-Suche (welche ich mir mit preg_match_all geholt habe)
    Wenn ich jedoch die Ergebnisse ersetzen will werden alle mit der ersten Ersetzung ersetzt

    Was kann ich da machen?

    Danke schomal!

  • #2
    hä?
    poste mal bitte, ich blick's grad nich
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Beispiel:

      Die Variable $text hat folgenden Wert:

      Code:
      [BEISPIEL]
      Beispiel 1:
      
      Dieser innere Teil des Tags soll durch abc 0 ersetzt werden!
      [/BEISPIEL]
      
      ...
      
      [BEISPIEL]
      Beispiel 2:
      
      Dieser innere Teil des Tags soll durch abc 1 ersetzt werden!
      [/BEISPIEL]
      nachdem ich folgenden PHP-Code anwende ...

      PHP-Code:
      $preg '%\[BEISPIEL\](.*)\[\/BEISPIEL\]%siU';

      if (
      preg_match_all($preg,$Text,$CodeArray))
      {
        for (
      $n=0$n<count($CodeArray[1]); $n++)
        {
          
      $Text preg_replace($preg,"abc " $n,$Text);
        }

      ... erhalte ich folgendes:

      Code:
      abc 0
      
      ...
      
      abc 0
      eigentlich sollte es aber folgendes anzeigen:

      Code:
      abc 0
      
      ...
      
      abc 1
      Danke schonmal!

      Kommentar


      • #4
        Original geschrieben von cYaONE
        PHP-Code:
        preg_replace($preg,"abc " $n,$Text); 
        was für nen wert hat $text denn bitte?
        wo hast du die ausgabe?

        erstmal wird das so wie du schreibst nie laufen, da die Variable $text die ja als zu ersetzendes beim preg_replace steht nirgends gefüllt wird

        außerdem seh ich keine ausgabe, aber ich sehe, dass du so die ausgabe in der for-schleife machen müsstest, weil du $text immer überschreibst
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Die Variable Test hat wie gesagt folgenden Inhalt:

          Code:
          [BEISPIEL]
          Beispiel 1:
          
          Dieser innere Teil des Tags soll durch abc 0 ersetzt werden!
          [/BEISPIEL]
          
          ...
          
          [BEISPIEL]
          Beispiel 2:
          
          Dieser innere Teil des Tags soll durch abc 1 ersetzt werden!
          [/BEISPIEL]
          Ich geb die Variable später dann natürlich mit echo aus, aber es funktioniert nicht so wie ich will

          Nochwas: Warum wird die Variable $Text immer wieder überschrieben? Es wird doch nur ersetzt, oder?

          Kommentar


          • #6
            sorry, überlesen

            preg_replace ersetzt alle vorkommen, ganz egal was du vorher mit preg_match_all machst

            aber lies dir mal das manual durch: http://www.php.net/manual/de/function.preg-replace.php
            ganz besonders die parameterauflistung
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              hier gehts weiter.
              http://www.php-resource.de/forum/sho...threadid=18325

              *CLOSE*
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar

              Lädt...
              X