Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class TemplateService
- {
- public static function parse($str)
- {
- $lines = explode("\n", $str);
- $out = [];
- foreach($lines as $line)
- {
- if(!$line)
- {
- $out[]= '';
- continue;
- }
- else if($line[0] == '@')
- {
- $out[]= '<?php '.substr($line, 1).' ?>';
- }
- }
- }
- public static function parseExpr($str)
- {
- return preg_replace_callback(
- '/(?<VAR>\$\w+)(?:(?<DIR>[><])(?<PAD>\d+)(?::(?<CHAR>\w*))?(?:\.(?<DEC>\d+))?|#(?<DATE>\S+))?/',
- function($m) {
- $var = $m['VAR'];
- if(isset($m['DATE']))
- $var =
- "date(".
- "'".str_replace('_', ' ', $m['DATE'])."', ".
- "strtotime($var)".
- ")";
- elseif(isset($m['DEC']))
- $var =
- "number_format(".
- "$var,".
- "{$m['DEC']},".
- "',',".
- "'.'".
- ")";
- if(isset($m['DIR']))
- $var =
- "substr(".
- "str_pad(".
- "$var, ".
- "{$m['PAD']},".
- "'".($m['CHAR'] ?? ' ')."',".
- ($m['DIR'] == '<' ? 'STR_PAD_LEFT' : 'STR_PAD_RIGHT').
- ")".
- ")";
- return "<?= $var ?>";
- },
- $str,
- -1,
- $c,
- PREG_UNMATCHED_AS_NULL
- );
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment