Ankündigung

Einklappen
Keine Ankündigung bisher.

Alle vorkommen mit regex finden

Einklappen

Neue Werbung 2019

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

  • Alle vorkommen mit regex finden

    Hi Leute,

    ich hab ein Problem, an dem ich schon ca. 3 Tage rumarbeite...
    Ich hab in php jetzt regex (mit preg_match()) entdeckt... Mit regex kenne ich mich aus.

    Jetzt zu meinem Problem:

    PHP-Code:
          $string "[URL=\"\"]text[/URL]";
          if(
    preg_match("/\[URL=(?:\"|')(.*)(?:\"|')\](.*)\[\/URL\]/i",
                       
    $string$link))
            {
              
    $linkziel $link[1];
              
    $linktext $link[2];
              
    $string preg_replace("/\[URL=(?:\"|')(.*)(?:\"|')\](.*)\[\/URL\]/",
                                    
    "<a href=\"$linkziel\" target=\"new\">$linktext</a>"$string);
          }
          echo
    "$string"
    Ich will in $string alle Vorkommen von /\[URL=(?:\"|')(.*)(?:\"|')\](.*)\[\/URL\]/ finden und dann durch <a href=\"$linkziel\" target=\"new\">$linktext</a> ersetzen. Danach will ich $string mit den modifizierungen ausgeben. Mein Code findet aber nur das erste Vorkommen... Als ich mal danach gegooglet habe, bin ich auf preg_match_all() gestoßen... Aber das hat dan irgentwie auch nichts gebracht. Denn dann hatte ich zwar alle ergebnisse schön in einem Array gehabt, preg_replace() funktionierte dann aber anscheinend nicht mehr einwandfrei.

    Ich bin mir sicher, ihr könnt mir bei meinem Problem weiterhelfen... gibt es vielleicht so etwas wie preg_replace_all() ?!
    Danke schon mal im Vorraus

    MfG terbaik


  • #2
    Dafür reicht preg_replace allein. Dort kannst Du genauso gut die gematchen Werte verarbeiten. Beispiel steht im Manual [MAN]preg_replace[/MAN]
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      dann müsste mein code aber doch auch funktionieren ?! was muss ich umschreiben, damit das script alles was ich will ersetzt ? sry, ich stell mich vielleicht n bischen blöd an, aber ich bin einfach noch ein total primitiver anfänger in php...

      Kommentar


      • #4
        Nein. Dein Code sucht ein Vorkommen und ersetzt den konkreten Code.

        Mein Vorschlag resetzt alle matchenden Ausdrücke mit deren Extrakten.

        was muss ich umschreiben, damit das script alles was ich will ersetzt
        Bitte schau ins Manual. Da steht ein passendes Beispiel.
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          ok, thx fürs manual. diese art der variablenspeicherung mit regex kenne ich schon von perl. tja, schade dass sich perl und php sonst nicht so ähnlich sind, denn in in perl bin ich ziemlich gut... so, zurück zum thema; das mit den variablen direkt in der preg_replace, also mit $1, $2, $3, usw... war auch das erste, was ich ausprobiert hatte, aber da hab ich anscheinend einen kleinen fehler gemacht... na dann heissts mal wieder... aus dem manual abschreiben... ich werds auf jeden fall ma testen... geb dann feedback...
          danke, nikosch

          Kommentar


          • #6
            So, danke für die tolle und schnelle hilfe!

            Es hat jetzt alles perfekt funktioniert... Nur mit meinem Muster hat etwas nicht gestimmt... Deswegen hab ich ein anderes, viel einfacheres genommen:

            PHP-Code:
            $string "HALLO.XYZ\"R.ege.xHALLO";
            $string preg_replace("/(H)(A)(L)(L)(O)/i"" $5$4$3$2$1 "$string);
            echo
            "$string"

            Kommentar


            • #7
              Zitat von terbaik Beitrag anzeigen
              So, danke für die tolle und schnelle hilfe!

              Es hat jetzt alles perfekt funktioniert... Nur mit meinem Muster hat etwas nicht gestimmt... Deswegen hab ich ein anderes, viel einfacheres genommen:

              PHP-Code:
              $string "HALLO.XYZ\"R.ege.xHALLO";
              $string preg_replace("/(H)(A)(L)(L)(O)/i"" $5$4$3$2$1 "$string);
              echo
              "$string"

              PHP-Code:
              $string "HALLO.XYZ\"R.ege.xHALLO";
              $string preg_replace("/(HALLO)/i"strrev($1), $string);
              echo
              "$string"
              Sieht noch einfacher aus , cu Grüße Destruction
              "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

              Kommentar

              Lädt...
              X