pattern

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

  • pattern

    Hallo,

    hab hier ein kleines Problem mit dem Pattern:
    Ein String z.B.:

    {aaa,v} {ccc,p} {bbb,v}

    soll zu

    var1 phrase1 var2

    konvertiert werden!

    Leider erhalte ich aber

    var1 phrase1 {bbb,v}

    Irgendwas stimmt imho nicht mit der Backreference...

    Hier der Sourcecode:
    PHP-Code:
    <?php
     
    //funktion zum ersetzen der variablen / phrasen
     
    function replace_placeholders($string$vars$type) {
      
    $search = array();
      
    $replace = array();
      
    $pattern "/\{(.*?),".$type."\}/";
      
      
    preg_match_all($pattern,$string,$vars_names);
      for(
    $i=0;$i<count($vars_names[0]);$i++) {
       if(
    array_key_exists($vars_names[1][$i],$vars)) {
        
    $search[] = $vars_names[0][$i];
        
    $replace[] = $vars[$vars_names[1][$i]];   
       }                    
      } 
      return 
    str_replace($search,$replace,$string);
     }

     
    //test string
     
    $string "{aaa,v} {ccc,p} {bbb,v}";

     
    //variablen in test string ersetzen
     
    $array = array('aaa' => 'var1',
                       
    'bbb' => 'var2');
     
    $string replace_placeholders($string$array'v');

     
    //phrasen in test string ersetzen
     
    $array = array('ccc' => 'phrase1');
     
    $string replace_placeholders($string$array'p');
     
    echo 
    $string;
    ?>
    Bitte beachten: Die { und } Klammer in der 5. Zeile sind escapet - das Forum verschluckt nur die backslashes!

  • #2
    Hi,

    PHP-Code:
    $pattern "/\\{([^\\{]*?),".$type."\\}/"
    sollte passen.
    Vorher wurde das ganze in [COLOR=blue]{aaa,v}[/COLOR] [COLOR=red]{ccc,p} {bbb,v}[/COLOR] geteilt, weil er ja bis "v}" beim ersten durchgang gesucht hat...

    mfg oko

    Kommentar


    • #3
      Hi,

      danke für die schnelle Hilfe - funktioniert einwandfrei!

      Kommentar

      Lädt...
      X