REGEX: Rückreferenzierung in Funktionen

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

  • REGEX: Rückreferenzierung in Funktionen

    Bei der Ersetzung von Regulären Ausdrücken kann man Backreferenzen verwenden um bei dem String mit dem man ersetzen will auf gefundene Submuster zurückzugreifen.
    PHP-Code:
    <?php
    $string 
    'April 15, 2003';
    $pattern '/(\w+) (\d+), (\d+)/i';
    $replacement '${1}1,$3';
    echo 
    preg_replace($pattern$replacement$string);
    ?>
    Ist es irgendwie möglich beim ersetzen mit einer Funktion diese Referenz auch zu verwenden? In meinem konkreten Fall sieht das so aus:
    PHP-Code:
    <?php
    $string 
    preg_replace '/\[php\]([[ : p r i n t : ]]+?)\[\/php\]/i'highlight_string '$1'true ), $string );
    ?>
    (Leerzeichen damits keinen smile gibt :P )
    Leider funktioniert das so nicht. Hat jemand eine Idee oder einen Umweg?
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

  • #2
    ich habe inzwischen schon eine lösung gefunden:
    PHP-Code:
                    preg_match_all '/\[php\]([[ : p r i n t : ]]+?)\[\/php\]/i'$string$matches );
                    
    print_r $matches );
                    foreach ( 
    $matches ] as $key => $var ) {
                        
    $string str_replace $varhighlight_string $matches ] [ $key ], true ), $string );
                    } 
    preg_match_all sollte den code finden den es dann in matches schreibt

    allerdings funktioniert der Reguläre Ausdruck nicht. Hat jemand vielleicht eine Idee für einen Regulären Ausdruck der PHP-Quelltext "findet"?
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Kommentar


    • #3
      so problem gelöst:
      PHP-Code:
                      preg_match_all '/\[php\]([[:print:]\s]+?)\[\/php\]/i'$string$matches );
                      foreach ( 
      $matches ] as $key => $var ) {
                          
      $string str_replace $varhighlight_string $matches ] [ $key ], true ), $string );
                      } 
      print umfasst keine whitespacess
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Kommentar

      Lädt...
      X