
1 realpg PRO 最简单的办法直接 eval …… |
3 guoqiao 2015-09-20 15:59:40 +08:00 via iPhone 这不就是 django 或 jinja 的模板语法么 |
4 foccy 2015-09-20 16:05:02 +08:00 我觉得 extract 这个函数是不是能解决的这个问题? |
6 feiyuanqiu 2015-09-20 17:08:52 +08:00 get_defined_vars () 函数会获取到当前作用域已定义的变量及全局变量,返回一个键为变量名,值为变量值的数组 你可以用这个函数实现你的需求 $_definedVars = get_defined_vars (); if (asset ($_definedVars[$name])) { // blabla... } |
7 CNCCTV OP @feiyuanqiu 这是在函数里的替换字符串转成变量,请问怎么做? ```php $datas = preg_replace_callback ('/{{([\w\W]*?)}}/im', function ($matches ) { $matches=$matches[1]; return $matches; }, $datas[0]); return $datas; ``` |
8 CNCCTV OP @feiyuanqiu 使用 print_r (get_defined_vars ());显示出来 Array ( [matches] => Array ( [0] => {{name}} [1] => name ) ) |
9 feiyuanqiu 2015-09-20 18:12:00 +08:00 via iPhone |
10 feiyuanqiu 2015-09-20 18:14:17 +08:00 via iPhone @CNCCTV 匿名函数是单独的作用域,要使用外部作用域的变量需要用 use 传进去 |
11 CNCCTV OP @feiyuanqiu 没看懂。。。 |
12 feiyuanqiu 2015-09-20 18:56:22 +08:00 @CNCCTV 改了下你的代码 // 把会用到的变量都声明好 $vars = array ( 'name' => 'blabla', ); $result = preg_replace_callback ('/{{([\w\W]*?)}}/im', function ($matches ) use ($vars ) { return isset ($vars[$matches[1]]) ? $vars[$matches[1]] : ''; }); |
13 CNCCTV OP @feiyuanqiu 还要声明啊?不是自动获取全部变量吗? |
14 CNCCTV OP @feiyuanqiu 现在算是做好了,通过传参数方式,但是还有一个新问题,如果替换的变量是一个数组,返回输出会报错,这怎么办啊? |