preg_replace & Funktion

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

  • preg_replace & Funktion

    Hallo,

    habe per Suche leider nichts zu diesem Thema gefunden!

    Ich möchte meine Dokumente in einer Klasse parsen:

    PHP-Code:
    $tpl preg_replace("=\{translate\}(.*?)\{\/translate\}=si",$this->translate("$1"),$tpl); 
    $this-translate:
    PHP-Code:
        function translate($value){
          echo 
    $value//Testausgabe
          
    $words $this->fetch_language($_SESSION['lang']); //Alle relevanten Sprachvariablen werden
                                                     //in den Array $words eingespeist
          
    return isset($words[$value]) ? $words[$value] : '';
        } 
    Mein Problem ist jetzt aber, dass er mir bei $value den Wert "$1" ausgibt, anstatt die tatsaechliche Variable z.B. "pagetitle"!

    Ich weiß nicht wieso er das nicht macht! Ich blick echt nicht durch!
    Vor allem: was ist der Unterschied zwischen \1 und $1 ???

    Und dann bin ich auf meiner Suche auf den Modifier "e" gestoßen, der in eurem Tutorial leider nicht erwähnt wird. Was macht dieser?

    Danke für eure Antworten
    Zuletzt geändert von lsgdcity; 10.09.2005, 11:19.

  • #2
    wird

    $this->translate

    als array abgerufn oder assoc ?

    grüsse fanger

    Kommentar


    • #3
      Re: preg_replace & Funktion

      PHP-Code:
      $tpl preg_replace("=\{translate\}(.*?)\{\/translate\}=si",$this->translate("$1"),$tpl); 
      das geht nicht...du musst wenn du eine Funktion aufrufen willst, Pattern Modifier e verwenden, aber du kannst keine Backreference an eine Funktion übergeben, die einen Wert zurückliefert, indem du die Backreferences erst benutzen könntest!

      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
      Wie man Fragen richtig stellt

      Kommentar


      • #4
        @phpfanger: ganz normal als String

        @ghostgambler: Das hört sich überhaupt nicht gut an! Wie kann man dieses Problem umgehen?

        Vielleicht mit preg_match den Inhalt rausfinden und dann per str_replace {translate}$match[0]{/translate} durch die Variable $words[$match[0]] ersetzen.

        Aber ist das wirklich die eleganteste Lösung?

        Kommentar


        • #5
          Re: preg_replace & Funktion

          Original geschrieben von Lukas Schulze
          Hallo,

          habe per Suche leider nichts zu diesem Thema gefunden!

          Und dann bin ich auf meiner Suche auf den Modifier "e" gestoßen, der in eurem Tutorial leider nicht erwähnt wird. Was macht dieser?

          Danke für eure Antworten
          Modifier 'e' :
          Das Muster ist PHP-Code, der ausgeführt wird. Das Ergebins wird dann für den eigentlichen Vergleich genütz.



          gruss
          LukasS

          Kommentar


          • #6
            Re: Re: preg_replace & Funktion

            PHP-Code:
            $tpl preg_replace("=\{translate\}(.*?)\{\/translate\}=sie"
            'call_user_func_array(array($this, "translate"), "\\1"'), $tpl); 
            oder so

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              Hi,

              @LukasS: Vielen Dank, kann man gut gebrauchen

              @ghostgambler: *wow* ich hab's jetzt noch ein bissl angepasst und es funktioniert.

              PHP-Code:
              $tpl preg_replace("={translate}(.*?){/translate}=sie"
              'call_user_func_array(array($this,"translate"), strtoupper("\\1"))'$tpl); 
              Vielen vielen Dank für die Hilfe

              Kommentar

              Lädt...
              X