preg_replace

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

  • preg_replace

    ersetzen will ich folgendes:
    {Test1:Test2}

    und draus werden soll folgendes:
    $Test1[Test2]

    PHP-Code:
    $origString "{Test1:Test2}";
    $pattern = array("/^\{([a-zA-Z]+): ([a-zA-Z])\}/");
    $replace = array("$\\0\[\\1\]");
    $string preg_replace($pattern,$replace,$origString); 
    zwischen +): ( muß das leerzeichen noch raus, kann ich hier aber nicht machen, sonst hab ich ein smilie drinn!

    bekomme nur jedesmal ne Fehlermeldung (hab auch schon einigemale Umgebaut...)?!
    Parse error: parse error, unexpected '{' in C:\...\index.php(58) : eval()'d code on line 2

    einer ne idee ?

    gruss

  • #2
    Also bei mir funktioniert folgendes:

    PHP-Code:
    $origString "{Test1:Test2}";
    $pattern = array("/^{([a-zA-Z0-9]+)\:\([a-zA-Z0-9]+)}/");
    $replace = array("$\\\\1[\\\\2]");
    $string preg_replace($pattern,$replace,$origString); 
    Zu deinen Codestück:

    1) Ok das Leerzeichen musste weg

    2) bei "$replace" hattest du vermutlich auch schon doppelte Backslashes, aber 0 und 1 anstatt 1 und 2

    3) In deinem Teststring kamen auch Zahlen vor also habe ich in den Regex noch jeweils "0-9" eingefügt

    4) und im zweiten Teil nach ein "+"

    aber probier es mal selber aus

    Kommentar


    • #3
      so gehts jetzt:
      PHP-Code:
      <?php
          $pattern 
      = array(
                      
      "/\{(.*): (.*)\}/miUs"
                      
      );
          
      $replace = array(
                      
      "\$cfg\\1[\\2]"
                      
      );
          
      $stringpreg_replace($pattern,$replace,$string);
      ?>
      gruss

      Kommentar

      Lädt...
      X