<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 模板解析類 模板解析類可以對你視圖文件中的偽變量進行簡單的替換,它可以解析簡單的變量和變量標簽對。 如果你從沒使用過模板引擎,下面是個例子,偽變量名稱使用大括號括起來: ~~~ <html> <head> <title>{blog_title}</title> </head> <body> <h3>{blog_heading}</h3> {blog_entries} <h5>{title}</h5> <p>{body}</p> {/blog_entries} </body> </html> ~~~ 這些變量并不是真正的 PHP 變量,只是普通的文本,這樣能讓你的模板(視圖文件)中沒有任何 PHP 代碼。 注解 CodeIgniter?**并沒有**?讓你必須使用這個類,因為直接在視圖中使用純 PHP 可能速度會更快點。 盡管如此,一些開發者還是喜歡使用模板引擎,他們可能是和一些其他的不熟悉 PHP 的設計師共同工作。 重要 模板解析類?**不是**?一個全面的模板解析方案,我們讓它保持簡潔,為了達到更高的性能。 * [使用模板解析類](http://codeigniter.org.cn/user_guide/libraries/parser.html#id2) * [初始化類](http://codeigniter.org.cn/user_guide/libraries/parser.html#id3) * [解析模板](http://codeigniter.org.cn/user_guide/libraries/parser.html#id4) * [變量對](http://codeigniter.org.cn/user_guide/libraries/parser.html#id5) * [使用說明](http://codeigniter.org.cn/user_guide/libraries/parser.html#id6) * [視圖片段](http://codeigniter.org.cn/user_guide/libraries/parser.html#id7) * [類參考](http://codeigniter.org.cn/user_guide/libraries/parser.html#id8) ## [使用模板解析類](http://codeigniter.org.cn/user_guide/libraries/parser.html#id9) ### [初始化類](http://codeigniter.org.cn/user_guide/libraries/parser.html#id10) 跟 CodeIgniter 中的其他類一樣,可以在你的控制器中使用?$this->load->library()?方法加載模板解析類: ~~~ $this->load->library('parser'); ~~~ 一旦加載,模板解析類就可以像下面這樣使用: ~~~ $this->parser ~~~ ### [解析模板](http://codeigniter.org.cn/user_guide/libraries/parser.html#id11) 你可以使用?parse()?方法來解析(或顯示)簡單的模板,如下所示: ~~~ $data = array( 'blog_title' => 'My Blog Title', 'blog_heading' => 'My Blog Heading' ); $this->parser->parse('blog_template', $data); ~~~ 第一個參數為?[視圖文件](http://codeigniter.org.cn/user_guide/general/views.html)?的名稱(在這個例子里,文件名為 blog_template.php), 第二個參數為一個關聯數組,它包含了要對模板進行替換的數據。上例中,模板將包含兩個變量: {blog_title} 和 {blog_heading} 。 沒有必要對 $this->parser->parse() 方法返回的結果進行 echo 或其他的處理,它會自動的保存到輸出類, 以待發送給瀏覽器。但是,如果你希望它將數據返回而不是存到輸出類里去,你可以將第三個參數設置為 TRUE ~~~ $string = $this->parser->parse('blog_template', $data, TRUE); ~~~ ### [變量對](http://codeigniter.org.cn/user_guide/libraries/parser.html#id12) 上面的例子可以允許替換簡單的變量,但是如果你想重復某一塊代碼,并且每次重復的值都不同又該怎么辦呢? 看下我們一開始的時候展示那個模板例子: ~~~ <html> <head> <title>{blog_title}</title> </head> <body> <h3>{blog_heading}</h3> {blog_entries} <h5>{title}</h5> <p>{body}</p> {/blog_entries} </body> </html> ~~~ 在上面的代碼中,你會發現一對變量:{blog_entries} data... {/blog_entries} 。這個例子的意思是, 這個變量對之間的整個數據塊將重復多次,重復的次數取決于 "blog_entries" 參數中元素的個數。 解析變量對和上面的解析單個變量的代碼完全一樣,除了一點,你需要根據變量對的數據使用一個多維的數組, 像下面這樣: ~~~ $this->load->library('parser'); $data = array( 'blog_title' => 'My Blog Title', 'blog_heading' => 'My Blog Heading', 'blog_entries' => array( array('title' => 'Title 1', 'body' => 'Body 1'), array('title' => 'Title 2', 'body' => 'Body 2'), array('title' => 'Title 3', 'body' => 'Body 3'), array('title' => 'Title 4', 'body' => 'Body 4'), array('title' => 'Title 5', 'body' => 'Body 5') ) ); $this->parser->parse('blog_template', $data); ~~~ 如果你的變量對數據來自于數據庫查詢結果,那么它已經是一個多維數組了,你可以簡單的使用數據庫的?result_array()?方法: ~~~ $query = $this->db->query("SELECT * FROM blog"); $this->load->library('parser'); $data = array( 'blog_title' => 'My Blog Title', 'blog_heading' => 'My Blog Heading', 'blog_entries' => $query->result_array() ); $this->parser->parse('blog_template', $data); ~~~ ### [使用說明](http://codeigniter.org.cn/user_guide/libraries/parser.html#id13) 如果你傳入的某些參數在模板中沒用到,它們將被忽略: ~~~ $template = 'Hello, {firstname} {lastname}'; $data = array( 'title' => 'Mr', 'firstname' => 'John', 'lastname' => 'Doe' ); $this->parser->parse_string($template, $data); // Result: Hello, John Doe ~~~ 如果你的模板中用到了某個變量,但是你傳入的參數中沒有,將直接顯示出原始的偽變量: ~~~ $template = 'Hello, {firstname} {initials} {lastname}'; $data = array( 'title' => 'Mr', 'firstname' => 'John', 'lastname' => 'Doe' ); $this->parser->parse_string($template, $data); // Result: Hello, John {initials} Doe ~~~ 如果你的模板中需要使用某個數組變量,但是你傳入的參數是個字符串類型,那么變量對的起始標簽將會被替換, 但是結束標簽不會被正確顯示: ~~~ $template = 'Hello, {firstname} {lastname} ({degrees}{degree} {/degrees})'; $data = array( 'degrees' => 'Mr', 'firstname' => 'John', 'lastname' => 'Doe', 'titles' => array( array('degree' => 'BSc'), array('degree' => 'PhD') ) ); $this->parser->parse_string($template, $data); // Result: Hello, John Doe (Mr{degree} {/degrees}) ~~~ 如果你的某個單一變量的名稱和變量對中的某個變量名稱一樣,顯示結果可能會不對: ~~~ $template = 'Hello, {firstname} {lastname} ({degrees}{degree} {/degrees})'; $data = array( 'degree' => 'Mr', 'firstname' => 'John', 'lastname' => 'Doe', 'degrees' => array( array('degree' => 'BSc'), array('degree' => 'PhD') ) ); $this->parser->parse_string($template, $data); // Result: Hello, John Doe (Mr Mr ) ~~~ ### [視圖片段](http://codeigniter.org.cn/user_guide/libraries/parser.html#id14) 你沒必要在你的視圖文件中使用變量對來實現重復,你也可以在變量對之間使用一個視圖片段, 在控制器,而不是視圖文件中,來控制重復。 下面是一個在視圖中實現重復的例子: ~~~ $template = '<ul>{menuitems} <li><a href="{link}">{title}</a></li> {/menuitems}</ul>'; $data = array( 'menuitems' => array( array('title' => 'First Link', 'link' => '/first'), array('title' => 'Second Link', 'link' => '/second'), ) ); $this->parser->parse_string($template, $data); ~~~ 結果: ~~~ <ul> <li><a href="/first">First Link</a></li> <li><a href="/second">Second Link</a></li> </ul> ~~~ 下面是一個在控制器中利用視圖片段來實現重復的例子: ~~~ $temp = ''; $template1 = '<li><a href="{link}">{title}</a></li>'; $data1 = array( array('title' => 'First Link', 'link' => '/first'), array('title' => 'Second Link', 'link' => '/second'), ); foreach ($data1 as $menuitem) { $temp .= $this->parser->parse_string($template1, $menuitem, TRUE); } $template = '<ul>{menuitems}</ul>'; $data = array( 'menuitems' => $temp ); $this->parser->parse_string($template, $data); ~~~ 結果: ~~~ <ul> <li><a href="/first">First Link</a></li> <li><a href="/second">Second Link</a></li> </ul> ~~~ ## [類參考](http://codeigniter.org.cn/user_guide/libraries/parser.html#id15) classCI_Parser parse($template,?$data[,?$return = FALSE]) 參數: * **$template**?(string) -- Path to view file * **$data**?(array) -- Variable data * **$return**?(bool) -- Whether to only return the parsed template 返回: Parsed template string 返回類型: string 根據提供的路徑和變量解析一個模板。 parse_string($template,?$data[,?$return = FALSE]) 參數: * **$template**?(string) -- Path to view file * **$data**?(array) -- Variable data * **$return**?(bool) -- Whether to only return the parsed template 返回: Parsed template string 返回類型: string 該方法和?parse()?方法一樣,只是它接受一個字符串作為模板,而不是去加載視圖文件。 set_delimiters([$l = '{'[,?$r = '}']]) 參數: * **$l**?(string) -- Left delimiter * **$r**?(string) -- Right delimiter 返回類型: void 設置模板中偽變量的分割符(起始標簽和結束標簽)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看