[REGEX] preg_replace() Muster

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

  • [REGEX] preg_replace() Muster

    Hi,
    ich möchte gerne eine Platzhalter-Ersatzfunktion bauen.

    Ein String mit Bild Platzhaltern sieht z.B. so aus:

    <b>text</b>{img=../images/1pixel.gif,1,1} <i> jksdjsdf</i>{img=../images/2pixel.gif,1,1} dslkdsfkldsfk

    Also 2 Bilder umgeben von Text.
    ich möchte nun das preg_match_all() die Bildplatzhalter findet und die gefundenen Stellen + den eingeschlossen Inhalt (z.B. "../images/2pixel.gif,1,1") findet und sie jeweils in ein array packt, damit ich diese in einer for-schleife sich jeweils ersetzen lassen kann.


    Ich habe dann eine testfunktion geschrieben um zu sehen ob das alles funktioniert.

    PHP-Code:
    preg_match_all("|(\{img=)+(.*)+(\})|"$value$matches);
    echo 
    "1: ".$matches[0][0]." <br>2: ".$matches[0][1]."<br>";
    echo 
    "3: ".$matches[1][0]."<br> 4: ".$matches[1][1]; 

    Als Output sollte dort theoretisch stehen:
    1: {img=../images/1pixel.gif,1,1}
    2: {img=../images/2pixel.gif,1,1}
    3: ../images/1pixel.gif,1,1
    4: ../images/2pixel.gif,1,1


    das mit dem im array packen macht preg ja selber.

    naja zurzeit kommt da aber folgendes raus:

    1: <b>text</b>{img=../images/1pixel.gif,1,1} <i> jksdjsdf</i>{img=../images/2pixel.gif,1,1} dslkdsfkldsfk
    2:
    3: {img=
    4:

    Es muss also am Suchmuster liegen.
    Kann mit jemand helfen?

    Grüße und Danke, Flo

  • #2
    probiere mal: /({)+(.*)?(})/iU
    EDIT:
    hab geprüft, muß funz. schau dir print_r($matches) mal an.
    Zuletzt geändert von asp2php; 26.11.2004, 18:58.

    Kommentar


    • #3
      jetzt komme folgendes raus:

      1: {img=../images/1pixel.gif,1,1}
      2: {img=../images/2pixel.gif,1,1}
      3: {
      4: {

      schon mal ein wenig besser

      Gruß und danke schon mal, Flo

      Kommentar


      • #4
        so ich habs!
        *freu*...hab da echt ne weile dran gesessen.

        preg_match_all("/\{img=(.*)\}/iU", $value, $matches);


        das funzt.

        Gruß, Flo

        P.S.: der Fehler war, das ich das falsche subpattern mit dem array angesprochen hab...

        Kommentar


        • #5
          Original geschrieben von ultimazer_1
          jetzt komme folgendes raus:

          1: {img=../images/1pixel.gif,1,1}
          2: {img=../images/2pixel.gif,1,1}
          3: {
          4: {

          schon mal ein wenig besser

          Gruß und danke schon mal, Flo
          Nö, das kommt raus:
          PHP-Code:
          Array
          (
              [
          0] => Array
                  (
                      [
          0] => {img=../images/1pixel.gif,1,1}
                      [
          1] => {img=../images/2pixel.gif,1,1}
                  )

              [
          1] => Array
                  (
                      [
          0] => {
                      [
          1] => {
                  )

              [
          2] => Array
                  (
                      [
          0] => img=../images/1pixel.gif,1,1
                      
          [1] => img=../images/2pixel.gif,1,1
                  
          )

              [
          3] => Array
                  (
                      [
          0] => }
                      [
          1] => }
                  )


          ich hab doch gesagt, dass dur den Output von print_r anschauen sollst

          Kommentar

          Lädt...
          X