私のコード例でこれらのコメントに反論し、テンプレート エンジンが何であるかを見てみましょう。

WBOY
リリース: 2016-06-13 13:29:17
オリジナル
731 人が閲覧しました

私のコード例を使用してこれらのコメントに反論し、テンプレート エンジンが何であるかを確認してください。 。
【評価が公平であることが分かったので、実行するたびに置き換えが実行され、システムのパフォーマンスが大幅に低下することを理解する必要があります。このようなテンプレート エンジンにはどのような利点があるのでしょうか。 ? 】
【確かにギャップがありますね。拝見しました。お話によると、1年以上経過し、ダウンロード数は5件、営業利益は10セントとのことです。コードを投稿したり投稿したりするだけで、誰もダウンロードせず、利益も得られないという彼の状況との間には、大きなギャップがあります。 】


PHP コード
<!--

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");
         }
}
?>
ログイン後にコピー



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>
ログイン後にコピー






-----解決策---------------------------- -
あなたが投稿したものはテンプレート エンジンではありません
------解決策----------------------
では、テンプレート エンジンは何をしましたか
PHPコード
            //-- 通常の置換
            //単一の出力配列値
        // 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>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート