• [转]php和html混编的三种方式


    php和html混编的三种方式

     
    W3school 上学PHP,看到第一句就是“PHP 文件可包含文本、HTML 标签以及脚本” 

    在后来的学习别人的代码,发现在需要HTML代码的PHP脚本中,多用这么几种方法 

    第一种是在HTML中加PHP。大段大段的html代码中,在各个需要执行php的地方<?php .... ?>。这种方法在ASP的程序中比较常见。 
    例子: 
    <html>
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <meta http-equiv="Content-Language" content="zh-CN" /> 
    <title>Hello World</title>
        <style>
            body{font-size:15px;color:#000;font-family:Arial,Helvetica,sans-serif;}
            a{color:#039;text-decoration:none;}
        </style> 
    </head>
    <body>
            </b> 
            <?php 
                echo "Hello world!这是正文"; 
            ?> 
            <br>
            <a href=# >这是一个超链接</a>
            </b>
        </body>
    </html>

    第二种用echo输出HTML。但是HTML中有双引号,所用echo输出的内容用单引号括起来,避免出错,也省了转义这一步。
    比如这样的代码: 
    <?php 
    if(!$_POST) 
        { 
        echo '<form action="" method="post"> 
                服务器地址:<input type="text" name="host" value="localhost" /><br /> 
                数据库账号:<input type="text" name="user" value="" /><br /> 
                数据库密码:<input type="password" name="pwd" value="" /><br /> 
                指定数据库:<input type="text" name="db" value="test" /><br /> 
                <input type="submit" value="确定"/> 
               </form><hr/>说明:<b>……<br /></b>
             '; 
        } 
    ?>
    不过比较多见的还是加了转义符号的,个人觉得阅读起来不爽 
    echo "<input type="submit" value="确定"/>"
    

     


    第三种就是用(<<<)标记符了,这是在PHP168的模板代码中首次见到的。 
    <<<EOT 
    EOT;
    
    中间的文档直接输出,一个比较好理解的说法是“一个多行的echo ”。 
    优点是输出大段HTML方便,不需要转义,而且可以引用变量。
    一个例子: 
    <?php
    
        $label1 = "deepblue_mainslide";
        $label2 = "deepblue_mainh1";
        $label3 = "deepblue_maint1";
        $label4 = "deepblue_maint2";
        $rs = array("http://123.abc.com", "abc", "ABC");
     
        print <<<EOT
            <div class="slidecont">{$label1}</div> 
            <div class="newcontainter"> 
            <div class="head">{$label2}</div> 
            <div class="cont" id="Tab1"> 
                {$label3} 
            </div> 
            <div class="cont" id="Tab2"> 
                {$label4} 
            </div> 
            </div> 
            <a href="$rs[0]" title="$rs[1]" target="_blank">$rs[2]</a> 
    EOT;
    ?>

    在上面的例子干净利索的输出了大段HTML+变量的值,非常棒。 
    但是在使用(<<<EOT) 标记符还有一点需要注意:
    标识符结束字符串即EOT;要独占一行,前后都不许再有内容。 
    PS.注意不但EOT;前面不能有空格,而且<<<EOT后面也不能有任何空格!!!否则不但什么都不会输出,而且还会报错!!!


    尤其容易犯的失误就是在标识符前加空格和缩进符,下面的例子什么都不会输出 

    <?php 
        print <<<EOT[1]
        <a href="http://blog.i1728.com/" title="东方天宇的博客">东方天宇的博客</a> 
    [2]EOT;[3]
        echo "喂~人家在等你呢!"; 
    ?>

    我们会发现,[如果三个地方任何一个地方加了空格],会显示以下三种不同的错误提示,最后的echo也没有执行。

        //[1]( ! ) Parse error: syntax error, unexpected '<<' (T_SL) in D:MyHTTPApache24htdocs	estPHPmixHTML04.php on line 2
        //[2]( ! ) Parse error: syntax error, unexpected end of file, expecting variable (T_VARIABLE) or heredoc end (T_END_HEREDOC) or ${ (T_DOLLAR_OPEN_CURLY_BRACES) or {$ (T_CURLY_OPEN) in D:……	estPHPmixHTML04.php on line 14
        //[3]( ! ) Parse error: syntax error, unexpected '{' in D:MyHTTPApache24htdocs	estPHPmixHTML04.php on line 8

    这是因为(<<<EOT)没有找到标识符结束字符,将echo语句也包含到需要输入的内容了。 

    同时,因为没有找到标识符结束字符所有的内容都不会输出。 
    当然,这只是我的理解,因为即使将echo语句放在print <<<EOT 
    前面,脚本也不会有内容内容。 
    具体什么原因,就留给大家去讨论了。
     
     
  • 相关阅读:
    poj2778 DNA Sequence(AC自动机+矩阵快速幂)
    poj2001 Shortest Prefixes (trie树)
    hdu5536 Chip Factory
    解决 苹果手机点击输入框页面自动放大111
    css 记录
    对复选框自定义样式 优化方法
    css引入外部字体
    jquery获取当前页面的URL信息
    左侧导行伸缩控制
    表单提交同类数据的做成数组
  • 原文地址:https://www.cnblogs.com/skysowe/p/5771758.html
Copyright © 2020-2023  润新知