diff --git a/dot/demo.php b/dot/demo.php new file mode 100644 index 0000000..1d61e8f --- /dev/null +++ b/dot/demo.php @@ -0,0 +1,71 @@ +_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");