]> git.mxchange.org Git - friendica.git/blobdiff - include/template_processor.php
tests for the template engine
[friendica.git] / include / template_processor.php
index 111fc5849a7b8af9041ffe465653722bfd3b464e..06c49a7083c83b21986c9629734b3ba75d60ada3 100755 (executable)
@@ -80,7 +80,7 @@
                 */
                private function _replcb_for($args){
                        $m = array_map('trim', explode(" as ", $args[2]));
-                       list($keyname, $varname) = explode("=>",$m[1]);
+                       @list($keyname, $varname) = explode("=>",$m[1]);
                        if (is_null($varname)) { $varname=$keyname; $keyname=""; }
                        if ($m[0]=="" || $varname=="" || is_null($varname)) die("template error: 'for ".$m[0]." as ".$varname."'") ;
                        //$vals = $this->r[$m[0]];
 
                private function var_replace($s){
                        $m = array();
-                       if (preg_match_all('/\$\[{0,1}([a-zA-Z0-9-_]+\.*)+\]{0,1}/', $s,$m)){
+                       /** regexp:
+                        * \$                                           literal $
+                        * (\[)?                                        optional open square bracket
+                        * ([a-zA-Z0-9-_]+\.?)+         var name, followed by optional
+                        *                                                      dot, repeated at least 1 time
+                        * (?(1)\])                                     if there was opened square bracket
+                        *                                                      (subgrup 1), match close bracket
+                        */
+                       if (preg_match_all('/\$(\[)?([a-zA-Z0-9-_]+\.?)+(?(1)\])/', $s,$m)){
+                               
                                foreach($m[0] as $var){
                                        $varn = str_replace(array("[","]"), array("",""), $var);
                                        $val = $this->_get_var($varn, true);