PHP代码问题

正则表达式匹配了{$name} {age}...
$this->_vars[]我用这个数组吧匹配的东西保存

private function parVar(){
             $_patten='/\{\$([\w]+)\}/';//匹配模板中的{变量}
             if(preg_match($_patten,$this->_tpl,$mat)){
                 //模板内容替换后付给$this->_tpl
                 $this->_tpl=preg_replace($_patten,"<?php echo \$this->_vars['$1'];?>",$this->_tpl);
             }
         }

为什么这里面"<?php echo \$this->_vars['$1'];?>"能用 $1来表示?

阅读 2.7k
2 个回答

这里的 $1 不是 PHP 的变量, 而是 preg_replace 的占位符,表示正则表达式匹配出来的结果(1表示第一个匹配,也就是 '/\{\$([\w]+)\}/'() 取出的那些字符)

语法要求:%2\$s占位符的格式应该是这样呀~ 为什么$1是占位符啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题