php/html混写

有人认为用php开发出的如smarty等模板引擎是一种倒退,因为php是一种天生的web语言,它本身的<?php ?>标签已经能很好的满足要求。在这里我们不讨论哪一种看法更对,而是总结php如何更好的与html结合。
在探讨前,我们需要区别下在php中单引号'和双引号的不同:即双引号可以包含一个变量,而单引号却不能,看代码。

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

单/双引号包裹内容

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等函数

sprintf等包含printf的函数可以输出格式化的字符串,sprintf和vsprintf函数可以将格式化后的字符串赋值给一个变量,而不是直接打印。

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

显然,这个函数不适合变量太多的格式化输出,因为,会连自己都忘记,变量和占位符没有明显的映射关系,只是通过顺序来对应,很难区分。

HEREDOC/NOWDOC

这是5.3之后的新特性,可以用自定义的标签包含文档。常用的标签包括:HTML,EOF,EOT,LABEL等。

$title = "关于seo的文章";
$content = "seo的意思是搜索引擎优化……";
$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;//没有解析变量

echo $str;

在phpstorm等IDE里,能很好的解决着色问题。
在不方便使用php标签和模板引擎的情况下,以上的三种方法能很好的解决php与html混合的问题。

    原文作者:EdisonDong
    原文地址: https://www.jianshu.com/p/fa7e876a6523
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞