php/html混寫

有人認(rèn)為用php開(kāi)發(fā)出的如smarty等模板引擎是一種倒退,因?yàn)閜hp是一種天生的web語(yǔ)言,它本身的<?php ?>標(biāo)簽已經(jīng)能很好的滿足要求。在這里我們不討論哪一種看法更對(duì),而是總結(jié)php如何更好的與html結(jié)合。
在探討前,我們需要區(qū)別下在php中單引號(hào)'和雙引號(hào)的不同:即雙引號(hào)可以包含一個(gè)變量,而單引號(hào)卻不能,看代碼。

$var = 'this is a variable';
echo '$var'; //$var;
echo "$var"; //this is a variable;

單/雙引號(hào)包裹內(nèi)容

echo '
<html>
    <body>
        I hope this doc do not include variable
    </body>
</html>
';

$variable = "content";
echo "
<html>
    <body>This doc can include some $variable</body>
</html>
";

使用sprintf、vsprintf等函數(shù)

sprintf等包含printf的函數(shù)可以輸出格式化的字符串,sprintf和vsprintf函數(shù)可以將格式化后的字符串賦值給一個(gè)變量,而不是直接打印。

$content = sprintf('<html><head><title>%s</title></head></html>',"seo");
echo $content;

顯然,這個(gè)函數(shù)不適合變量太多的格式化輸出,因?yàn)椋瑫?huì)連自己都忘記,變量和占位符沒(méi)有明顯的映射關(guān)系,只是通過(guò)順序來(lái)對(duì)應(yīng),很難區(qū)分。

HEREDOC/NOWDOC

這是5.3之后的新特性,可以用自定義的標(biāo)簽包含文檔。常用的標(biāo)簽包括:HTML,EOF,EOT,LABEL等。

$title = "關(guān)于seo的文章";
$content = "seo的意思是搜索引擎優(yōu)化……";
$str = <<<HTML
<html>
    <head>
        <meta charset="utf-8" />
        <title>$title</title>
    </head>
    <body>$content</body>
</html>
HTML;//解析了變量
$str = <<<'HTML'
<html>
    <head>
        <meta charset="utf-8" />
        <title>$title</title>
    </head>
    <body>$content</body>
</html>
HTML;//沒(méi)有解析變量

echo $str;

在phpstorm等IDE里,能很好的解決著色問(wèn)題。
在不方便使用php標(biāo)簽和模板引擎的情況下,以上的三種方法能很好的解決php與html混合的問(wèn)題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容