模板引擎?No 正则而已
之前就觉得TP的那个模板引擎太不爽了,非常的蛋疼,所以参照PHPCMS的改了下,哈哈,自己看吧 无 /** * 模板函数 * @param string $template 模板文件名 * @param string $path 模板路径 * @param string $suffix 模板后缀 */function template($template = '', $p
之前就觉得TP 的那个模板引擎太不爽了,非常的蛋疼,所以参照PHPCMS的 改了下, 哈哈,自己看吧
/** * 模板函数 * @param string $template 模板文件名 * @param string $path 模板路径 * @param string $suffix 模板后缀 */ function template($template = '', $path = '', $suffix = '', $show_error = true) { $tpl_path = $path ? $path : (config('tpl_path') ? config('tpl_path') : './template/'); $tpl_suffix = $suffix ? $suffix : (config('tpl_suffix') ? config('tpl_suffix') : '.html'); if (empty($template)) { $template_file = $tpl_path . __MODULE__ . '/' . __CONTROLLER__ . '/' . __ACTION__; } else { if (!$path) { $pcount = substr_count($template, '/'); if ($pcount == 0) { $template_file = $tpl_path . __MODULE__ . '/' . __CONTROLLER__ . '/' . trim($template, '/'); } else if ($pcount == 1) { $template_file = $tpl_path . __MODULE__ . '/' . trim($template, '/'); } else { $template_file = $tpl_path . trim($template, '/'); } } else { $template_file = $path . trim($template, '/'); } } $template_file .= $tpl_suffix; if (!is_file($template_file)) { if ($show_error === true) { halt('模板文件不存在:' . $template_file); } } else { $cache_template = DATA_PATH . 'cache' . _DIR . 'template' . _DIR . __MODULE__ . _DIR . md5($template_file) . '.php'; if (is_file($cache_template) && config('tpl_cache') == true && (config('tpl_expire') == 0 || (@filemtime($cache_template) + config('tpl_expire')) < time())) { } else { template::template_compile($template_file, $cache_template); } return $cache_template; } }
<?php class template { /** * 编译模板 * @param string $template_file 模板文件 * @param string $cache_file 缓存文件 */ public static function template_compile($template_file, $cache_file) { if (!is_file($template_file)) { return false; } $content = file_get_contents($template_file); $cache_dir = dirname($cache_file); if (!is_dir($cache_dir)) { mkdir($cache_dir, 0777, true); } $content = self::parse_template($content); @file_put_contents($cache_file, $content); return $cache_file; } public static function parse_template($str) { //include $str = preg_replace("/\{template\s+(.+)\}/", "<?php include template(\\1,'','','',false); ?>", $str); $str = preg_replace("/\{include\s+(.+)\}/", "<?php include \\1; ?>", $str); $str = preg_replace("/\{php\s+(.+?)\}/", "<?php \\1?>", $str); $str = preg_replace("/\{!(.+?)\}/", "<?php \\1?>", $str); $str = preg_replace("/\{if\s+(.+?)\}/", "<?php if(\\1) { ?>", $str); $str = preg_replace("/\{else\}/", "<?php } else { ?>", $str); $str = preg_replace("/\{elseif\s+(.+?)\}/", "<?php } elseif (\\1) { ?>", $str); $str = preg_replace("/\{\/if\}/", "<?php } ?>", $str); //for $str = preg_replace("/\{for\s+(.+?)\}/", "<?php for(\\1) { ?>", $str); $str = preg_replace("/\{\/for\}/", "<?php } ?>", $str); //++ -- $str = preg_replace("/\{\+\+(.+?)\}/", "<?php ++\\1; ?>", $str); $str = preg_replace("/\{\-\-(.+?)\}/", "<?php ++\\1; ?>", $str); $str = preg_replace("/\{(.+?)\+\+\}/", "<?php \\1++; ?>", $str); $str = preg_replace("/\{(.+?)\-\-\}/", "<?php \\1--; ?>", $str); //loop $str = preg_replace("/\{loop\s+(\S+)\s+(\S+)\}/", "<?php \$n=1;if(is_array(\\1)) foreach(\\1 AS \\2) { ?>", $str); $str = preg_replace("/\{loop\s+(\S+)\s+(\S+)\s+(\S+)\}/", "<?php \$n=1; if(is_array(\\1)) foreach(\\1 AS \\2 => \\3) { ?>", $str); $str = preg_replace("/\{\/loop\}/", "<?php \$n++;}unset(\$n); ?>", $str); //函数 $str = preg_replace("/\{:([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff:]*\(([^{}]*)\))\}/", "<?php echo \\1;?>", $str); $str = preg_replace("/\{~([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff:]*\(([^{}]*)\))\}/", "<?php \\1;?>", $str); //变量 $str = preg_replace("/\{\\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff:]*\(([^{}]*)\))\}/", "<?php echo \\1;?>", $str); $str = preg_replace("/\{(\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\}/", "<?php echo \\1;?>", $str); $str = preg_replace("/\{\\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff:]*\->[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff:])\}/", "<?php echo \\1;?>", $str); $str = preg_replace("/\{(\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\|([^{}]*)\}/", "<?php if(!empty(\\1)){echo \\1;}else{echo \\2;}?>", $str); $str = preg_replace('/\{(\\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*(?:\->)[^\}]+)\}/',"<?php echo \\1;?>", $str); //数组 $str = preg_replace("/\{(\\$[a-zA-Z0-9_\[\]\'\"\$\x7f-\xff]+)\}/es", "self::addquote('<?php echo \\1;?>')", $str); $str = preg_replace("/\{(\\$[a-zA-Z0-9_\[\]\'\"\$\x7f-\xff]+)\|([^{}]*)\}/es", "self::addquote('<?php if(!empty(\\1)){echo \\1;}else{echo \\2;} ?>')", $str); //常量 $str = preg_replace("/\{([A-Z_\x7f-\xff][A-Z0-9_\x7f-\xff]*)\}/s", "<?php echo \\1;?>", $str); //扩展标签 $str = preg_replace("/\{tag:(\w+)\s+([^}]+)\}/ie", "self::tag('$1','$2')", $str); $str = preg_replace("/\{:tag:(\w+)\s+([^}]+)\}/ie", "self::tag('$1','$2',true)", $str); return $str; } public static function addquote($var) { return str_replace("\\\"", "\"", preg_replace("/\[([a-zA-Z0-9_\-\.\x7f-\xff]+)\]/s", "['\\1']", $var)); } public static function tag($name, $data, $echo = false) { preg_match_all("/([a-z]+)\=[\"]?([^\"]+)[\"]?/i", stripslashes($data), $matches, PREG_SET_ORDER); foreach ($matches as $v) { if (in_array($v[1], array('action', 'cache', 'return'))) { $$v[1] = $v[2]; continue; } $datas[$v[1]] = $v[2]; } if (!isset($action) || empty($action)) { //方法 return false; } if (isset($cache)) { //缓存 $cache = intval($cache); } else { $cache = false; } if (!isset($return) || empty($return)) { $return = '$data'; } $tag_file = EXT_PATH . 'tags' . _DIR . $name . '_tag' . EXT; if (!is_file($tag_file)) { return false; } $str = '<?php '; if ($cache !== false) { $cache_name = 'tag/'.$name.'_'.$action. to_guid_string($datas); $str .= '$cache = cache::getInstance();'; $str .= $return . '=$cache->get("' . $cache_name . '");'; $str .= 'if(' . $return . ' === false){'; $str .= '$params = ' . self::filter_var($datas) . ';'; $str .= '$tag = load_ext("tags/' . $name . '_tag",true);'; $str .= $return . '=$tag->' . $action . '($params);'; $str .= '$cache->set("' . $cache_name . '",' . $return . ',' . $cache . ');'; $str .= '}'; if ($echo == true) { $str .= 'echo ' . $return . ';'; } $str .= ' ?>'; } else { $str .= '$params = ' . self::filter_var($datas) . ';'; $str .= '$tag = load_ext("tags/' . $name . '_tag",true);'; if ($echo) { $str .= 'echo $tag->' . $action . '($params);'; } else { $str .= $return . '=$tag->' . $action . '($params);'; } $str .= ' ?>'; } return $str; } protected static function filter_var($data) { $str = var_export($data, true); //$str = preg_replace('/\'\$(\w+?)\'/', "\$\\1", $str); $str = preg_replace('/\'/', '"', $str); $str = preg_replace('/\s{2,}/', '', $str); return $str; } }
public function test(){ include template(); }
{if !empty($result)} {loop $result $r} <tr> <td>{$r['order_sn']}</td> <td>{$r['name']}</td> <td>{$r['mobile']}</td> <td>{:fdate($r['add_time'])}</td> <td>{if $r['status'] == 0}处理中{elseif $r['status'] ==1}已处理{else}无效{/if}</td> </tr> {/loop} {else} <tr> <td colspan="9"> <span style="padding:10px; display:block;">您还没有收到任何预约</span> </td> </tr> {/if}

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Ungkapan biasa Golang menggunakan aksara paip | untuk memadankan berbilang perkataan atau rentetan, memisahkan setiap pilihan sebagai ungkapan OR logik. Contohnya: padanan "musang" atau "anjing": musang|padanan anjing "cepat", "coklat" atau "malas": (cepat|coklat|malas) sepadan dengan "Pergi", "Python" atau "Java": Pergi| Python |Java memadankan perkataan atau kod zip 4 digit: ([a-zA

Ungkapan biasa PHP ialah alat yang berkuasa untuk pemprosesan dan penukaran teks. Ia boleh mengurus maklumat teks dengan berkesan dengan menghuraikan kandungan teks dan menggantikan atau memintasnya mengikut corak tertentu. Antaranya, aplikasi biasa ungkapan biasa adalah untuk menggantikan rentetan bermula dengan aksara tertentu Kami akan menerangkannya seperti berikut

Berkenaan PPT masking, pasti ramai yang tidak faham dengannya ketika membuat PPT, tetapi hanya mengada-ngada untuk membuat apa yang mereka suka Oleh itu, ramai yang tidak tahu apa itu PPT masking, dan mereka juga tidak faham Saya tahu apa yang dilakukan oleh topeng ini, dan saya tidak tahu bahawa ia boleh menjadikan gambar itu kurang membosankan. Jadi, bagaimana untuk menambah topeng PPT? Sila baca di bawah. 1. Mula-mula kita buka PPT, pilih gambar kosong, kemudian klik kanan [Set Background Format] dan pilih warna pepejal. 2. Klik [Insert], word art, masukkan perkataan 3. Klik [Insert], klik [Shape]

Adakah anda tahu bahawa menggunakan templat boleh menjadikan anda lebih pantas dalam mencatat nota dan lebih berkesan untuk menangkap idea penting? OneNote mempunyai set templat siap sedia untuk anda gunakan. Bahagian yang terbaik ialah anda juga boleh mereka bentuk templat mengikut keperluan anda. Sama ada anda seorang pelajar, pahlawan korporat atau pekerja bebas yang melakukan kerja kreatif. Templat OneNote boleh digunakan untuk merekodkan nota penting dalam struktur dan format yang sesuai dengan gaya anda. Templat boleh menjadi garis besar proses pengambilan nota. Amatur hanya mencatat nota, profesional mengambil nota dan menarik sambungan daripada mereka melalui nota tersusun dengan bantuan templat. Mari lihat cara menggunakan templat dalam OneNote. Gunakan Templat OneNote Lalai Langkah 1: Tekan Windows+R pada papan kekunci anda. TypeOneno

Pengkhususan templat C++ mempengaruhi lebihan beban dan penulisan semula fungsi: Kelebihan beban fungsi: Versi khusus boleh menyediakan pelaksanaan berbeza bagi jenis tertentu, sekali gus menjejaskan fungsi yang dipilih pengkompil untuk memanggil. Mengatasi fungsi: Versi khusus dalam kelas terbitan akan mengatasi fungsi templat dalam kelas asas, menjejaskan kelakuan objek kelas terbitan apabila memanggil fungsi.

Cara mengalih keluar bahasa Cina menggunakan peraturan biasa dalam PHP: 1. Buat fail contoh PHP 2. Tentukan rentetan yang mengandungi bahasa Cina dan Inggeris 3. Gunakan "preg_replace('/([\x80-\xff]*)/i'; '',$a);" Kaedah biasa boleh mengalih keluar aksara Cina daripada hasil pertanyaan.

Pencahayaan global masa nyata (GI masa nyata) sentiasa menjadi grail suci grafik komputer. Selama bertahun-tahun, industri telah mencadangkan pelbagai kaedah untuk menyelesaikan masalah ini. Kaedah biasa termasuk mengekang domain masalah dengan menggunakan andaian tertentu, seperti geometri statik, perwakilan pemandangan kasar, atau mengesan kuar kasar dan interpolasi pencahayaan antara keduanya. Dalam Enjin Unreal, sistem pencahayaan dan pantulan global teknologi Lumen diasaskan oleh Krzysztof Narkowicz dan Daniel Wright. Matlamatnya adalah untuk membina penyelesaian yang berbeza daripada pendahulunya, mampu mencapai pencahayaan seragam dan kualiti pencahayaan seperti bakar. Baru-baru ini, di SIGGRAPH 2022, Krzysztof Narko

Menurut berita pada 8 Oktober, pasaran kereta A.S. sedang mengalami perubahan di bawah hud Enjin kuasa enam silinder dan lapan silinder yang digemari sebelum ini secara beransur-ansur kehilangan penguasaannya, manakala enjin tiga silinder muncul. Berita pada 8 Oktober menunjukkan bahawa pasaran kereta A.S. sedang mengalami perubahan di bawah hud. Enjin kuasa enam silinder dan lapan silinder yang digemari pada masa lalu secara beransur-ansur kehilangan penguasaannya, dan enjin tiga silinder mula muncul Dalam fikiran kebanyakan orang, orang Amerika menyukai model anjakan besar, dan "American big V8". sentiasa sinonim dengan kereta Amerika. Bagaimanapun, menurut data yang dikeluarkan baru-baru ini oleh media asing, landskap pasaran kereta A.S. sedang mengalami perubahan yang besar, dan pertempuran di bawah hud semakin sengit. Difahamkan sebelum 2019, Amerika Syarikat
