diff options
author | friendica <info@friendica.com> | 2012-02-21 14:32:17 -0800 |
---|---|---|
committer | friendica <info@friendica.com> | 2012-02-21 14:32:17 -0800 |
commit | 3e69b86bc1754087f8093b11b27aee2f56f5d79a (patch) | |
tree | 281bd5abe4d3a7995dd715045fc3c767dfbe123b /include | |
parent | a97cb88b658978f2172ec60a7d9a8661b230dfd0 (diff) | |
parent | 2904a3265a5aa17f968655487060f7f1817373c1 (diff) | |
download | volse-hubzilla-3e69b86bc1754087f8093b11b27aee2f56f5d79a.tar.gz volse-hubzilla-3e69b86bc1754087f8093b11b27aee2f56f5d79a.tar.bz2 volse-hubzilla-3e69b86bc1754087f8093b11b27aee2f56f5d79a.zip |
Merge branch 'pull'
Diffstat (limited to 'include')
-rwxr-xr-x | include/template_processor.php | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/include/template_processor.php b/include/template_processor.php index 25f7703a2..0d476f0e6 100755 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -10,7 +10,7 @@ var $done = false; var $d = false; var $lang = null; - + var $debug=false; private function _preg_error(){ switch(preg_last_error()){ @@ -160,6 +160,30 @@ return $s; } + private function _str_replace($str){ + #$this->search,$this->replace, + $searchs = $this->search; + foreach($searchs as $search){ + $search = "|".preg_quote($search)."(\|[a-zA-Z0-9_]*)*|"; + $m = array(); + if (preg_match_all($search, $str,$m)){ + foreach ($m[0] as $match){ + $toks = explode("|",$match); + $val = $this->_get_var($toks[0]); + for($k=1; $k<count($toks); $k++){ + $func = $toks[$k]; + if (function_exists($func)) $val = $func($val); + } + if (count($toks)>1){ + $str = str_replace( $match, $val, $str); + } + } + } + + } + return str_replace($this->search,$this->replace, $str); + } + public function replace($s, $r) { $this->r = $r; @@ -180,7 +204,7 @@ $os = ""; $count=0; while($os!=$s && $count<10){ $os=$s; $count++; - $s = str_replace($this->search,$this->replace, $s); + $s = $this->_str_replace($s); } return template_unescape($s); } |