Variablen aus Regex in preg_replace einer Funktion übergeben?

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

  • Variablen aus Regex in preg_replace einer Funktion übergeben?

    Hi, ich will ein erweitertes BBCode-Mod für Phorum schreiben, das auch Listen und Tabellen ermöglicht, also sowas wie [ list]
    [ *]Punkt 1
    [/ list] . Ich habe auch schon ziemlich genau im Kopf, wie das ganze funktionieren soll. Allerdings scheitere ich an einer Kleinigkeit:

    'Eindimensionale' BBCodes wie [ i]Kursivtext[ /i] oder so ist ja überhaupt kein Problem, funktioniert ja so:
    PHP-Code:
    $body preg_replace("/\[i\](.+?)\[\/i\]/is","<i>$1</i>",$body); 
    Bei 'mehrdimensionalen' Tags wie Listen kann ich das nicht wirklich mit einem preg_replace erledigen. also dachte ich ich packe das Parsen des Zeugs zwischen den beiden List-Tags in eine Funktion, würde dann allerdings so aussehen:
    PHP-Code:
    $body preg_replace("/\[list\](.+?)\[\/list\]/is","<ul>".parse_list($1)."</ul>",$body);

    function 
    parse_list($text) {
         
    //do something with $text
         
    return $text

    Funktioniert nur irgendwie nicht, weil er die Variable $1 nicht kennt. Gibt es irgendeine Möglichkeit, wie ich die in dem Regex erzeugte Variable $1 einer Funktion übergebe?

  • #2
    preg_replace() und Modifier e

    Kommentar


    • #3
      Original geschrieben von penizillin
      preg_replace() und Modifier e
      Modifier e ist mir auch viel lieber als preg-replace-callback.
      http://de2.php.net/manual/de/functio...e-callback.php
      Slava
      bituniverse.com

      Kommentar


      • #4
        liest sich schon mal sehr gut und schlüssig danke!
        Werds austesten und mich nochmal melden.

        Kommentar


        • #5
          1. Warum das Rad neu erfinden
          2. in der (sehr guten) Beschreibung steht, warum man mit regulären Ausdrücken nicht weit kommt
          http://www.christian-seiler.de/proje...ode/index.html
          Wir werden alle sterben

          Kommentar


          • #6
            Ich bleibe erstmal bei preg_replace. Liegt daran dass schon ein BBCode-Modul existiert dass ich erstmal nur um das, was mir fehlt, erweitern will, und das sind halt Listen und Tabellen.

            Trotzdem sieht die BBCode-Klasse von Christian Seiler nicht uninteressant aus. Eröffnet einen ganz neue Möglichkeiten. Also kann schon sein, dass ich da wieder drauf zurück komme, wenn ich mehr Zeit und Muße hab.

            Kommentar

            Lädt...
            X