_parseDotSyntax($variable); } /** * 解析点语法 * @param string $variable * @return string */ private function _parseDotSyntax($variable) { // 处理.语法(仅数组或已实现数组访问接口的对象) return preg_replace_callback("/\.([a-zA-Z0-9_-]*)/", function ($match) { if (isset($match[1]) && $match[1]) { return '[' . (is_numeric($match[1]) ? $match[1] : "'{$match[1]}'") . ']'; } else { return null; } }, $variable); } } $template = new Template(); echo $template->parseVariable('$arr.0.id|md5|substr=0,1|json_encode|date="Y-m-d",###|test=1,2,###,3,4'); echo PHP_EOL; echo $template->parseVariable('$arr.id'); echo PHP_EOL; echo $template->parseVariable("\$arr['id']"); echo PHP_EOL; echo $template->parseVariable('$arr.article_id|intval'); echo PHP_EOL; echo $template->parseVariable("\$arr['article_id']|intval|strtotime");