私のコード例を使用してこれらのコメントに反論し、テンプレート エンジンが何であるかを確認してください。 。
【評価が公平であることが分かったので、実行するたびに置き換えが実行され、システムのパフォーマンスが大幅に低下することを理解する必要があります。このようなテンプレート エンジンにはどのような利点があるのでしょうか。 ? 】
【確かにギャップがありますね。拝見しました。お話によると、1年以上経過し、ダウンロード数は5件、営業利益は10セントとのことです。コードを投稿したり投稿したりするだけで、誰もダウンロードせず、利益も得られないという彼の状況との間には、大きなギャップがあります。 】
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><?php class IndexAction extends YouYaX { public function index() { header("Content-type: text/html; charset=utf-8"); $this->assign("csdn","csdner,大家中午好") ->assign("head",array("来自","xxx")) ->assign("greet",array("<h2>PHP技术</h2>","基础编程","开放资源","framework")) ->assign("foot",array( array("id"=>'1',"foot"=>"这是底部测试1"), array("id"=>'2',"foot"=>"这是底部测试2"), array("id"=>'3',"foot"=>"这是底部测试3") )) ->assign("bye","88,good bye"); $this->display("index.html"); } } ?>
<!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --><html> <head> <title>welcome YouYaX</title> </head> <body> <center> <table width="400" > <!-- 普通替换 --> <tr> <td>{csdn}</td> </tr> <!-- 一维数组替换 --> <tr> <td><loop> {head} ―――― </loop> 发表在【{greet->1}】</td> </tr> </tr> <!-- 一维数组替换 --> <loop> <tr><td>{greet}</td></tr> </loop> </table> <hr> <!-- 二维数组替换 --> <list> <h3> {foot.foot} </h3> </list> <!-- 普通替换 --> {bye} <hr> 比较测试 , 让我们在html中使用PHP吧 , 模板变量上要写上双引号 <br> <?php if( "{bye}"=="88,good bye" ){ echo "<font color=red>看吧 , 果然正确吧, 测试结束,测试者:{head->1}</font>"; }else{ echo "错了"; } ?> </center> </body> </html>
//-- 通常の置換 //単一の出力配列値 // var_dump($this->array_array);終了; $return=preg_match_all('/{[^{]*->[^{}]*}/',$txt,$single); if($return){ foreach($single[0] as $v){ $x=strlen($v); $y=$x-2; $z=substr($v,1,$y); //タイトル->0 $z1 = preg_split('/->/', $z, -1, PREG_SPLIT_NO_EMPTY); $txt=str_replace($v,$this->array_array[$z1[0]][$z1[1]],$txt); } } //配列の置換 $return=preg_match_all("/<s>s*(.+?)s*<s>/s",$txt,$match); if($return){ 試す{ foreach($match[1] as $lv){ if(eregi("<s*loops*>",$lv)){ throw new Exception(htmlspecialchars("<loop> タグはネストできません<loop>!"),"304"); 壊す; } } }catch(例外 $e){ $this->例外($e); } $result0=$match[0]; //<loop><tr><td>{array}</td></tr></loop> 系列配列<loop>{array2} < ;/ループ> $result1=$match[1]; //<tr><td>{配列}</td></tr> //var_dump($result1);終了; foreach($result1 as $r1){ preg_match_all("/{(.*)}/",$r1,$match2); $result2=$match2[0][0];//{配列} $result3=$match2[1][0];//配列 $result4=$this->array_array[$result3];//取得した配列 試す{ if(!is_array($result4)) throw new Exception(htmlspecialchars("<loop> タグ解析エラー、1 次元配列のみがサポートされています!"), "306"); /* if(空($result4)) throw new Exception(htmlspecialchars("<loop>解析された 1 次元配列の値は空です!"),"308"); */ }catch(例外 $e){ $this->例外($e); } $result5=''; // unset($result5); //result5 がクリアされました foreach($result4 as $v){ $result5.=str_replace("{".$result3."}",$v,$r1); } foreach($result0 as $r0){ if(ereg($result2,$r0)) $txt=str_replace($r0,$result5,$txt); } } } //--配列の置換 //置換を含む $return=preg_match_all("/<s>/",$txt,$inc); if($return){ $inc1=$inc[0];//<include file="top.html">系列配列 $inc2=$inc[1];//top.html 系列配列 foreach($inc2 as $v){ if(file_exists($v)){ $sub=file_get_contents($v); foreach($inc1 as $v1){ //大文字と小文字を区別したマッチング if(ereg($v,$v1)){ $txt=str_replace($v1,$sub,$txt); } } }それ以外{ exit("タグ解析エラーが含まれています!"); } } } <div class="clear"></div></s></s></s>