Lucky: Smarty: existiert eine Art preg_match Funktion?

Hallo,

Smarty besitzt die Replace Funktion regex_replace. Ich bräuchte aber eine Art preg_match() oder ereg() Funktion in Smarty. Weiß jemand, ob es so etwas gibt oder wie man ev. so etwas implementieren könnte?

Danke für alle dienlichen Tipps.

Lucky

  1. Hallo,

    Smarty besitzt die Replace Funktion regex_replace. Ich bräuchte aber eine Art preg_match() oder ereg() Funktion in Smarty. Weiß jemand, ob es so etwas gibt oder wie man ev. so etwas implementieren könnte?

    Ich kenne mich mit Smarty zwar nicht aus, aber was spricht dagegen im Smarty Kontext "normales" PHP auszuführen?

    Gruß,
    Severin

    --
    They that can give up essential liberty to obtain a little temporary safty deserve neither liberty nor safty.
    -- Benjamin Franklin
    1. Ich kenne mich mit Smarty zwar nicht aus, aber was spricht dagegen im Smarty Kontext "normales" PHP auszuführen?

      Das ist sicher richtig. Nur hatte ich halt nach dem gründlichem Durchlesen der Smarty Dokumentation doch noch einen Funken Hoffnung, dass die - wenn sie schon eine Replace Funktion geschaffen haben - doch auch eine Matching Funktion implementiert haben, die ich aber in der Dokumentation übersehen haben könnte.

      Mir gefällt Smarty sehr, ich schätze die Code sparenden Eigenschaften dieses Tools, bin aber noch weit davon entfernt, alle Möglichkeiten in Anspruch genommen zu haben.

  2. Hallo Lucky,

    Smarty besitzt die Replace Funktion regex_replace. Ich bräuchte aber eine Art preg_match() oder ereg() Funktion in Smarty. Weiß jemand, ob es so etwas gibt oder wie man ev. so etwas implementieren könnte?

    ich weiß nicht was du machen willst - willst du z.B. aus dem String »Wir haben das Jahr 2005« (aus der Datenbank o.ä.) nur die Zahl »2005« haben?
    Dann könntest du dir einfach einen eigenen "Modifier" basteln. Mit der Datei »modifier.regex_match.php« (in (einem) Verzeichnis das in $plugins_dir steht) die den Inhalt:

    <?php
    function smarty_modifier_regex_match($string, $search){
        preg_match($search, $string, $match);
        return $match[1];
    }
    ?>

    hat und den Zeilen:
      {assign var="foo" value="Wir haben das Jahr 2005"}
      {* ^_ kann natürlich auch über $tmpl->assign('foo','...'); gemacht werden *}
      {$foo|regex_match:"~([0-9]+)~"}
    im Template bekommst du die Ausgabe »2005«.
    Oder was meinst du sonst?

    Grüße aus Nürnberg
    Tobias