RegEx Newbie braucht Hilfe

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

  • RegEx Newbie braucht Hilfe

    Hallo,

    ich habe folgendes kleines Problem:
    Ich habe einige Templates, bei denen Inhalte dynamisch ersetzt werden müssen. Die Stellen sind wie folgt gekennzeichnet:
    {#REPLACE_ME#}
    die zugehörigen Inhalte stehen in einem Array:
    $replace_content[REPLACE_ME] = 'TEST';
    Jetzt wollte ich mit Hilfe von Regulären Ausdrücken die entsprechenden Stellen durch die Inhalte des Array's ersetzen. (Muss dazusagen das ich bisher kaum mit RegEx gearbeitet habe), folgende Lösungsansätze funktionieren leider nicht:
    (1)
    $t = preg_replace("/(\{#)(\w{1,})(#\})/", $replace_content["\\2"], $t);
    Die richtigen Stellen werden zwar gefunden, aber nicht durch das entsprechende Arrayfeld ersetzt.
    (2)
    $t= preg_replace_callback ("/(\{#)(\w{1,})(#\})/", 'call', $t);
    Funktioniert eigentlich, sofern die Funktion "call" global ist und sich nicht in meiner Template-Klasse befindet. Das Frage hier ist: wie rufe ich mit preg_replace_callback eine Funktion auf die sich in der gleichen Klasse befindet (Nur innerhalb der Klasse steht mir das Array mit den ersetzenden Inhalten zur Verfügung)?
    $t= preg_replace_callback ("/(\{#)(\w{1,})(#\})/", 'this->call', $t);
    funktioniert nicht. :-(

    Ist das Problem generell mit preg_replace lösbar? Falls nein, wie rufe ich mit preg_replace_callback eine Funktion der aktuellen Klasse auf?

    Danke schon mal für eure Hilfe!
    tracer

    PS: Das Projekt wird mit PHP 5.0.2 realisiert.

  • #2
    Re: RegEx Newbie braucht Hilfe

    Ist das Problem generell mit preg_replace lösbar?
    ja. modifier e sollte dir weiterhelfen ... ersetzt alle backreferences, behandelt den ersatz dann wie php-code, und benutz das ergebnis zum ersetzen ...
    PHP-Code:
    ... ,'$replace_content["\\2"]', ... 
    sollte gehen ...
    Falls nein, wie rufe ich mit preg_replace_callback eine Funktion der aktuellen Klasse auf?
    die callbackfunktion muß als array angegeben werden ...
    PHP-Code:
    array($this'funktionsname'
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Problem beseitigt

      Danke für die schnelle Hilfe! Das Problem ist dadurch beseitigt, es funktionieren beide Löungsansätze einwandfrei!

      Kommentar


      • #4
        bitte.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar

        Lädt...
        X