str_replace mit fortlaufender nummerierung

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

  • str_replace mit fortlaufender nummerierung

    Hallo,

    ich habe ein kleines Problem...
    Ich habe eine Variable, in der ich einige Wörter ersetzen möchte. Allerdings mit einer Nummerierung

    Beispiel:

    ich habe die Variable $test mit dem Inhalt "bereich bereich bereich bereich".
    "bereich" möchte ich in dieser Variable durchnummerieren. Also ich möchte aus der Variable $test folgendes machen: "bereich1 bereich2 bereich3 bereich4".

    Hat jemand einen kleinen Tipp für mich?

  • #2
    - mit substr_count() weißt du, wie oft das wort "bereich" im text vorkommt.
    - so oft muss eine schleife den string durchgehen.
    - mit preg_replace() kannst du das wort "bereich[wortende]" durch "bereich".$i ersetzen, wobei $i die zählervariable in der schleife ist (die pro zyklus selbstverständlich um eins inkrementiert wird)
    - mit dem vierten parameter von preg_replace() kannst du erreichen, dass der string nur ein mal ersetzt wird.

    Kommentar


    • #3
      Oder so
      PHP-Code:
      $alt 'bereich irgendwas bereich nochmal bereich und nochmal bereich und letzter bereich';


      $neu $alt;
      $pos 0;
      $zaehler 0;

      while ((
      $pos strpos($neu'bereich',  $pos)) !== false)
          
      $neu substr_replace($neu'bereich'.(++$zaehler), $pos++, 7);

      echo 
      $alt;
      echo 
      '<br />';
      echo 
      $neu
      - mit strpos ermittelst du die Stelle im String, an der das Wort "bereich" steht
      - mit substr_replace ersetzt du ab dieser Stelle ($pos) 7 Zeichen (Länge von "bereich" durch "bereich" und eine Zählveriable ($zaehler)
      - ++$zaehler bewirkt, dass die Zählvariable um 1 erhöht wird, bevor sie zum Ersetzen genutzt wird
      - $pos++ bewirkt, dass $pos um 1 erhöht wird, nachdem die Ersetzung stattgefunden hat
      - danach wird wieder mit strpos die Stelle im String ermittelt, an der "bereich" steht; gesucht wird ab dem $pos-ten Zeichen, das (durch $pos++) auf das erste "e" im zuletzt gefundenen "bereich" zeigt

      Ab PHP5 kannst du auch mit stripos suchen und bist damit unabhängig von Groß- und Kleinschreibung
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        PHP-Code:
        $test 'bereich irgendwas bereich nochmal bereich und nochmal bereich und letzter bereich';
        $i 0;
        $test preg_replace('/bereich/ie'"'bereich'.(++\$i)"$test); 

        Kommentar


        • #5
          phoboslab:

          das nenne ich mal ein knackiges script, muss ich mir merken. hab für sowas sonst auch immer ne schleife genommen.
          [color=blue]...ich sehe was, was du nicht siehst...und das ist der QUELLTEXT![/color]

          Kommentar


          • #6
            klasse! the power of "e"!

            Kommentar


            • #7
              klasse! the power of "e"!
              is ´n insider, oder?
              [color=blue]...ich sehe was, was du nicht siehst...und das ist der QUELLTEXT![/color]

              Kommentar


              • #8
                OffTopic:
                nein.

                Kommentar


                • #9
                  OffTopic:
                  ...ich bin doch son blöder newbe, deshalb interessiert mich das. was ist "e" ?
                  [color=blue]...ich sehe was, was du nicht siehst...und das ist der QUELLTEXT![/color]

                  Kommentar


                  • #10
                    schau mal bei Regular Expressions was der Modifier "e" macht - steht auch auf der manual-Seite zu prego_replace()...

                    Kommentar


                    • #11
                      OffTopic:
                      der modifier "e".
                      prego_replace()

                      Kommentar


                      • #12
                        OffTopic:
                        Mann bin ich blöd...Sorry
                        [color=blue]...ich sehe was, was du nicht siehst...und das ist der QUELLTEXT![/color]

                        Kommentar


                        • #13
                          OffTopic:
                          ROFL - da hab ich ja nen lustigen Funktionsnamen getippt...

                          Kommentar

                          Lädt...
                          X