php/html混写

作者: EdisonDong | 来源:发表于2017-03-13 14:37 被阅读0次

    有人认为用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混合的问题。

    相关文章

      网友评论

        本文标题:php/html混写

        本文链接:https://www.haomeiwen.com/subject/hfgfnttx.html