PHP/HTML混寫的四種方式總結(jié)
PHP作為一款后端語言,為了輸出給瀏覽器讓瀏覽器呈現(xiàn)出來,無可避免的要輸出HTML代碼,下文介紹下我用過的三種PHP/HTML混編方法
1、單/雙引號包圍法
這是最初級的方法了,用法就像下面這樣
<?php echo ' <!DOCTYPE html> <html> <head> <title> </title> </head> <body> <span>測試頁面</span> </body> </html> '; ?>
這樣是最簡單的一種方法了,直接用單引號包裝上就行了
至于雙引號和單引號的區(qū)別,就在于前者解析引號內(nèi)的變量,而后者不解析引號內(nèi)的變量,參看下面的例子
<?php $Content='Hello!'; echo "$Content"; echo '<br>'; echo '$Content'; ?>
輸出
1 Hello!
2 $Content
由此可見,用雙引號包圍的字符串中的變量名自動(dòng)解析為了變量值,而用單引號包圍則依然顯示變量名
這樣書寫的缺點(diǎn)有兩點(diǎn)
1、如果輸出內(nèi)容中包含單/雙引號將極難處理,因?yàn)镻HP無法判斷這個(gè)引號是屬于程序的還是輸出內(nèi)容的,所以會(huì)報(bào)錯(cuò)
2、這樣書寫一些現(xiàn)代文本編輯器(如SublimeText)將無法對引號包圍的輸出的內(nèi)容進(jìn)行語法著色,如果出現(xiàn)一些格式問題將極難發(fā)現(xiàn)。圖中為SublimeText3的一張截圖,上面的是正常的著色,下面則是用引號包圍的著色
2、使用HEREDOC/NOWDOC
HEREDOC和NOWDOC是PHP5.3開始支持的一種新特性,它允許在程序中使用一種自定義的標(biāo)志符來包圍文本,而HEREDOC和NOWDOC的關(guān)系就類似于雙引號包圍和單引號包圍一樣,前者解析區(qū)塊內(nèi)的變量,而后者不解析區(qū)塊內(nèi)的變量
下面介紹HEREDOC和NOWDOC的用法
<?php $Content='Hello!'; //下面寫出了一個(gè)HEREDOC,其中標(biāo)識LABEL可以自定義為任何字符串,但要保證開頭的標(biāo)識和結(jié)尾的標(biāo)識一樣 echo <<<LABEL $Content LABEL; //結(jié)尾的方法:另起一行,打上LABEL。注意結(jié)尾的標(biāo)識前面和后面不要插入任何字符,空格也不行 echo '<br>';//為了演示方便換行 //NOWDOC和HEREDOC的書寫方式差別在于NOWDOC的標(biāo)識符需要用單引號包圍 echo <<<'LABEL' $Content LABEL; //其他無異 ?>
也可以參考PHP.net上的關(guān)于這兩個(gè)的wiki:https://wiki.php.net/rfc/heredoc-with-double-quotes
用HEREDOC/NOWDOC書寫極好的解決了包圍引號的問題,但依然沒有解決語法著色失效的問題
3、HTML中嵌入PHP程序塊(推薦)
這是一種非常合適的辦法,并且這種方法廣泛用在了諸如WordPress模板等場合中。書寫起來也較為方便,直接在需要輸出的地方寫上相關(guān)的代碼就行了,就像下面這樣
<?php //首先在這里寫好相關(guān)的調(diào)用代碼 function OutputTitle(){ echo 'TestPage'; } function OutputContent(){ echo 'Hello!'; } //然后再下面調(diào)用相關(guān)函數(shù)就可以了 ?> <!DOCTYPE html> <html> <head> <title><?php OutputTitle(); ?></title> </head> <body> <span><?php OutputContent(); ?></span> </body> </html>
我認(rèn)為這種方法是在這三種方法中最好的,但是這樣做的缺點(diǎn)是如果這樣的代碼塊一多了就會(huì)嚴(yán)重影響程序閱讀。
4、使用前端模板引擎
由于前端的重要性在整個(gè)Web開發(fā)中日益上升,現(xiàn)在前/后端工程師逐漸在分離成兩個(gè)職業(yè),所以說為了確保前/后端工程師能夠相互配合,使前端開發(fā)和后端開發(fā)出來的東西對接更完美,逐漸催生出了一系列前端模板引擎,比如Smarty。使用Smarty書寫的實(shí)現(xiàn)代碼可讀性非常的高,這使前/后端的分離也更加的高效和便捷。有興趣的同學(xué)可以去搜索了解
以上這篇PHP/HTML混寫的四種方式總結(jié)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
php提示無法加載或mcrypt沒有找到 PHP 擴(kuò)展 mbstring解決辦法
今天幫客戶配置phpmyadmin的時(shí)間,無法加載 mcrypt (外鏈,英語) 擴(kuò)展,請檢查您的 PHP 配置。2012-03-03PHP進(jìn)階學(xué)習(xí)之Geo的地圖定位算法詳解
這篇文章主要介紹了PHP進(jìn)階學(xué)習(xí)之Geo的地圖定位算法,結(jié)合實(shí)例形式詳細(xì)分析了php Geo的地圖定位算法相關(guān)概念、原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下2019-06-06PHP MVC模式在網(wǎng)站架構(gòu)中的實(shí)現(xiàn)分析
MVC模式在網(wǎng)站架構(gòu)中十分常見。它允許我們建立一個(gè)三層結(jié)構(gòu)的應(yīng)用程式,從代碼中分離出有用的層,幫助設(shè)計(jì)師和開發(fā)者協(xié)同工作以及提高我們維護(hù)和擴(kuò)展既有程式的能力。2010-03-03php中實(shí)現(xiàn)進(jìn)程鎖與多進(jìn)程的方法
這篇文章給大家介紹了單進(jìn)程的情況的進(jìn)程鎖實(shí)現(xiàn)、進(jìn)程鎖實(shí)現(xiàn)多進(jìn)程、進(jìn)程鎖在yii2中的實(shí)現(xiàn)以及殺死進(jìn)程的命令,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-09-09php set_time_limit()函數(shù)的使用詳解
本篇文章是對php中的set_time_limit()函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06php刪除與復(fù)制文件夾及其文件夾下所有文件的實(shí)現(xiàn)代碼
最近寫代碼,需要個(gè)復(fù)制文件夾與及其文件夾下所有文件的功能,有時(shí)候需要?jiǎng)h除,就可以用這個(gè)函數(shù)了,通過xcopy與deldir的自定義函數(shù),確實(shí)方便多了,特分享下2013-01-01php小經(jīng)驗(yàn):解析preg_match與preg_match_all 函數(shù)
本篇文章是對php中的preg_match函數(shù)與preg_match_all函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06