有人認(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)題。