From 88ce4744efbe41eb955ae66a0180ad58565e7e7e Mon Sep 17 00:00:00 2001 From: topnuomi <1130395124@qq.com> Date: Thu, 9 Jul 2020 15:21:28 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=82=B9=E8=AF=AD=E6=B3=95?= =?UTF-8?q?=E7=A4=BA=E4=BE=8B=E5=8F=8A=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dot/demo.php | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 dot/demo.php 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");