Rumah php教程 php手册 网友支招:生成smarttemplate模板处理程序框架

网友支招:生成smarttemplate模板处理程序框架

Jun 21, 2016 am 08:55 AM
array lf name

/**
* 生成smarttemplate模板处理程序框架
*
* smarttemplate 模板类具有极高的工作效率,代码尺寸很小。
* 他的可扩展模板函数更是有独到之处。
*
* 尽管只有不多的几个方法,使用起来也很简单。
* 但是在多此调整模板文件以后,要使处理程序与模板对应起来可是要花些工夫了。

* 本程序用于分析模板文件、并给出模板处理程序的框架
**/

ob_start();
$template_name = "include/main.html";
$str = file_get_contents($template_name);
preg_match_all("/{\w.*}/u",$str,$regs);


$stack = array();
$vars = array();
$functions = array();
$key = 0; // = chr(ord("i")+count($stack));
$lf = "\r\n";
$outstr = "";
foreach($regs[0] as $v)
{
  if(preg_match_all("//",$v, $r))
  {
    array_push($stack,$r[1][0]);
    $k = chr(ord("i")+$key++);
    $outstr .= str_repeat(chr(9), $key-1)."/* 对数组 \${$r[1][0]} 赋值 */$lf";
    $outstr .= str_repeat(chr(9), $key-1)."for(\$k=0;\$k  }

  elseif(preg_match_all("//",$v, $r))
  {
    $v = array_pop($stack);
    $outstr .= str_repeat(chr(9), --$key)."
  }

  $lf";
  if($key)
  {
    $k = chr(ord("i")+$key-1);
    $p = $stack[$key-1];
    $outstr .= str_repeat(chr(9), $key)."\${$p}[\$k][$v] = \$v;$lf";
  }

  else
  $outstr .= "\$data[$v] = \$v;$lf";
}

elseif(preg_match_all("/{(\w+)}/",$v, $r))
{
  if(count($stack))
  {
    $v = $stack[$key-1];
    $k = chr(ord("i")+$key-1);
    $outstr .= str_repeat(chr(9), count($stack))."\${$v}[\$k][{$r[1][0]}] = {$r[1][0]}测试;$lf";
    $ch = "\$data[".join("][][",$stack)."][{$r[1][0]}]";
    if(! in_array($ch, $vars))
    $vars[] = $ch; 
  }

  else
  if(! in_array("\$data[{$r[1][0]}]", $vars))
  { 
    $vars[] = "\$data[{$r[1][0]}]";
    $outstr .= "\$data[{$r[1][0]}] = {$r[1][0]}测试;$lf"; 
   }
}

else

if(preg_match_all("/{(\w+):([^}]+)/",$v, $r))
{ 
  $ch = $r[1][0]."({$r[2][0]})";
  $define = true;
  if(! @include("smarttemplate_extensions/smarttemplate_extension_serverr.php"))
  $define = false;
  $functions[] = array(name=>$ch, define=>$define);
  foreach(split(",",$r[2][0]) as $v)
  if($v[0] != ")
  if(! in_array($v, $vars))
  {
    $vars[] = "\$data[$v]";
    $outstr .= "\$data[$v] = $v测试;$lf";
   }
}

else
if(preg_match_all("/

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Perlawanan puncak! LF bercita-cita untuk memenangi 'Sepuluh Mahkota' pada Pusingan Akhir Musim Gugur OPL 2023 Perlawanan puncak! LF bercita-cita untuk memenangi 'Sepuluh Mahkota' pada Pusingan Akhir Musim Gugur OPL 2023 Jan 07, 2024 am 10:58 AM

Lelaki muda itu mengejar impiannya dan mencapai tahap yang tinggi, dan akhirnya memutuskan keputusan dalam pertempuran yang menentukan. Perlawanan Akhir Musim Luruh OPL 2023 berakhir dengan jayanya pada petang 23 Disember. Pertarungan berganda L sangat menarik dan mencetuskan sorakan penonton. Akhirnya, pasukan LF memecahkan cermin dan menjadi cahaya, membalas dendam pasukan LNGM, bercita-cita untuk memenangi "Sepuluh Mahkota", dan berjaya meneruskan menulis sejarah pasukan legenda. Bertemu LNGM sekali lagi pada perlawanan akhir musim luruh, pasukan LF menahan tekanan untuk dikalahkan dalam kumpulan yang kalah Selepas tewas pada perlawanan pertama peringkat akhir, mereka memenangi tiga perlawanan berturut-turut dan mengejar mata pusingan akhir musim luruh OPL 2023 kepada 3: 1. . Dapatkan mata perlawanan dahulu, dan pertarungan sengit bermula. Pada pusingan kelima Pusingan Akhir Musim Luruh, pada peringkat awal permainan, imbangan kemenangan mula condong ke arah pasukan LF, dengan dua Ikan Keli Gempa Bumi dan seekor Miko Orochi. Apabila semua orang fikir LF akan memenangi kejuaraan, LNG

Isih tatasusunan menggunakan fungsi Array.Isih dalam C# Isih tatasusunan menggunakan fungsi Array.Isih dalam C# Nov 18, 2023 am 10:37 AM

Tajuk: Contoh menggunakan fungsi Array.Sort untuk mengisih tatasusunan dalam Teks C#: Dalam C#, tatasusunan ialah struktur data yang biasa digunakan dan operasi pengisihan tatasusunan selalunya diperlukan. C# menyediakan kelas Array, yang mempunyai kaedah Isih untuk menyusun tatasusunan dengan mudah. Artikel ini akan menunjukkan cara menggunakan fungsi Array.Sort dalam C# untuk mengisih tatasusunan dan memberikan contoh kod khusus. Pertama, kita perlu memahami penggunaan asas fungsi Array.Sort. Susunan.Jadi

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Cara menggunakan fungsi array_combine dalam PHP untuk menggabungkan dua tatasusunan menjadi tatasusunan bersekutu Cara menggunakan fungsi array_combine dalam PHP untuk menggabungkan dua tatasusunan menjadi tatasusunan bersekutu Jun 26, 2023 pm 01:41 PM

Dalam PHP, terdapat banyak fungsi tatasusunan berkuasa yang boleh menjadikan operasi tatasusunan lebih mudah dan lebih pantas. Apabila kita perlu menggabungkan dua tatasusunan ke dalam tatasusunan bersekutu, kita boleh menggunakan fungsi array_combine PHP untuk mencapai operasi ini. Fungsi ini sebenarnya digunakan untuk menggabungkan kekunci satu tatasusunan sebagai nilai tatasusunan lain ke dalam tatasusunan bersekutu baharu. Seterusnya, kami akan menerangkan cara menggunakan fungsi array_combine dalam PHP untuk menggabungkan dua tatasusunan menjadi tatasusunan bersekutu. Ketahui tentang array_comb

Kaedah mudah dan jelas untuk menggunakan fungsi PHP array_merge_recursive(). Kaedah mudah dan jelas untuk menggunakan fungsi PHP array_merge_recursive(). Jun 27, 2023 pm 01:48 PM

Apabila pengaturcaraan dalam PHP, kita selalunya perlu menggabungkan tatasusunan. PHP menyediakan fungsi array_merge() untuk melengkapkan penggabungan tatasusunan, tetapi apabila kunci yang sama wujud dalam tatasusunan, fungsi ini akan menimpa nilai asal. Untuk menyelesaikan masalah ini, PHP juga menyediakan fungsi array_merge_recursive() dalam bahasa, yang boleh menggabungkan tatasusunan dan mengekalkan nilai kunci yang sama, menjadikan reka bentuk program lebih fleksibel. array_merge

Penjelasan terperinci tentang penggunaan fungsi PHP array_fill(). Penjelasan terperinci tentang penggunaan fungsi PHP array_fill(). Jun 27, 2023 am 08:42 AM

Dalam pengaturcaraan PHP, tatasusunan ialah struktur data yang sangat penting yang boleh mengendalikan sejumlah besar data dengan mudah. PHP menyediakan banyak fungsi berkaitan tatasusunan, array_fill() adalah salah satu daripadanya. Artikel ini akan memperkenalkan secara terperinci penggunaan fungsi array_fill(), serta beberapa petua dalam aplikasi praktikal. 1. Gambaran keseluruhan fungsi array_fill() Fungsi array_fill() adalah untuk mencipta tatasusunan nilai yang sama dengan panjang yang ditentukan. Secara khusus, sintaks fungsi ini ialah

Apakah punca biasa ArrayIndexOutOfBoundsException di Java? Apakah punca biasa ArrayIndexOutOfBoundsException di Java? Jun 24, 2023 pm 10:39 PM

Java adalah bahasa pengaturcaraan yang sangat berkuasa yang digunakan secara meluas dalam pelbagai bidang pembangunan. Walau bagaimanapun, semasa pengaturcaraan Java, pembangun sering menghadapi pengecualian ArrayIndexOutOfBoundsException. Jadi, apakah punca biasa anomali ini? ArrayIndexOutOfBoundsException ialah pengecualian masa jalan biasa di Jawa. Ini bermakna apabila mengakses data, subskrip tatasusunan melebihi julat tatasusunan. Sebab biasa termasuk

Pengenalan kepada cara menggunakan fungsi PHP array_change_key_case(). Pengenalan kepada cara menggunakan fungsi PHP array_change_key_case(). Jun 27, 2023 am 10:43 AM

Dalam pengaturcaraan PHP, tatasusunan ialah jenis data yang kerap digunakan. Terdapat juga beberapa fungsi operasi tatasusunan, termasuk fungsi array_change_key_case(). Fungsi ini boleh menukar kes nama kunci dalam tatasusunan untuk memudahkan pemprosesan data kami. Artikel ini akan memperkenalkan cara menggunakan fungsi array_change_key_case() dalam PHP. 1. Sintaks fungsi dan tatasusunan_ubah_ke parameter

See all articles