首頁 > php教程 > php手册 > 主體

[轉]php和html混編的三種方式

WBOY
發布: 2016-08-15 16:49:41
原創
1784 人瀏覽過

php和html混編的三種方式

 
在W3school 上學PHP,看到第一句就是「PHP 檔案可包含文字、HTML 標籤以及腳本」 

在後來的學習別人的程式碼,發現在需要HTML程式碼的PHP腳本中,多用這麼多方法 

第一種是在HTML中加上PHP。大段大段的html程式碼中,在各個需要執行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><span style="color: #000000;">
        body{font</span>-size:15px;color:<span style="color: #008000;">#</span><span style="color: #008000;">000;font-family:Arial,Helvetica,sans-serif;}</span>
        a{color:<span style="color: #008000;">#</span><span style="color: #008000;">039;text-decoration:none;}</span>
    </style> 
</head>
<body>
        </b> 
        <?<span style="color: #000000;">php 
            </span><span style="color: #0000ff;">echo</span> "Hello world!这是正文"<span style="color: #000000;">; 
        </span>?> 
        <br>
        <a href=<span style="color: #008000;">#</span><span style="color: #008000;"> >这是一个超链接</a>
        </b>
    </body>
</html>
登入後複製

 


第二種用echo輸出HTML。但是HTML中有雙引號,所用echo輸出的內容用單引號括起來,避免出錯,也省了轉義這一步。
例如這樣的程式碼: 
<?<span style="color: #000000;">php 
</span><span style="color: #0000ff;">if</span>(!<span style="color: #800080;">$_POST</span><span style="color: #000000;">) 
    { 
    </span><span style="color: #0000ff;">echo</span> '<span style="color: #000000;"><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>
         '<span style="color: #000000;">; 
    } 
</span>?>
登入後複製
不過比較多見的還是加了轉義符號的,個人覺得閱讀起來不爽 
echo "<input type=\"submit\" value=\"确定\"/>"
登入後複製

 


第三種就是用(<<<)標記符了,這是在PHP168的模板程式碼中首次見到的。 
<<<EOT 
EOT;
登入後複製

 

中間的文檔直接輸出,一個比較好理解的說法是「一個多行的echo 」。 
優點是輸出大段HTML方便,不需要轉義,而且可以引用變數。
一個例子: 
<?<span style="color: #000000;">php

    </span><span style="color: #800080;">$label1</span> = "deepblue_mainslide"<span style="color: #000000;">;
    </span><span style="color: #800080;">$label2</span> = "deepblue_mainh1"<span style="color: #000000;">;
    </span><span style="color: #800080;">$label3</span> = "deepblue_maint1"<span style="color: #000000;">;
    </span><span style="color: #800080;">$label4</span> = "deepblue_maint2"<span style="color: #000000;">;
    </span><span style="color: #800080;">$rs</span> = <span style="color: #0000ff;">array</span>("http://123.abc.com", "abc", "ABC"<span style="color: #000000;">);
 
    </span><span style="color: #0000ff;">print</span> <<<<span style="color: #000000;">EOT
        </span><div <span style="color: #0000ff;">class</span>="slidecont">{<span style="color: #800080;">$label1</span>}</div> 
        <div <span style="color: #0000ff;">class</span>="newcontainter"> 
        <div <span style="color: #0000ff;">class</span>="head">{<span style="color: #800080;">$label2</span>}</div> 
        <div <span style="color: #0000ff;">class</span>="cont" id="Tab1"><span style="color: #000000;"> 
            {</span><span style="color: #800080;">$label3</span><span style="color: #000000;">} 
        </span></div> 
        <div <span style="color: #0000ff;">class</span>="cont" id="Tab2"><span style="color: #000000;"> 
            {</span><span style="color: #800080;">$label4</span><span style="color: #000000;">} 
        </span></div> 
        </div> 
        <a href="<span style="color: #800080;">$rs</span>[0]" title="<span style="color: #800080;">$rs</span>[1]" target="_blank"><span style="color: #800080;">$rs</span>[2]</a><span style="color: #000000;"> 
EOT;
</span>?>
登入後複製

 


在上面的範例乾淨俐索的輸出了大段HTML+變數的值,非常棒。 
但是在使用(<<
標識符結束字串即EOT;要獨佔一行,前後都不許再有內容。 
PS.注意不但EOT;前面不能有空格,而且<<


尤其容易犯的失誤就是在標識符前面加上空格和縮進符,下面的例子什麼都不會輸出 

<?<span style="color: #000000;">php 
    </span><span style="color: #0000ff;">print</span> <<<<span style="color: #000000;">EOT<span style="color: #ff0000;">[1]
    </span></span><a href="http://blog.i1728.com/" title="东方天宇的博客">东方天宇的博客</a><span style="color: #000000;"><span style="color: #ff0000;"> 
[2]</span>EOT;<span style="color: #ff0000;">[3]
    </span></span><span style="color: #0000ff;">echo</span> "喂~人家在等你呢!"<span style="color: #000000;">; 
</span>?>
登入後複製

我們會發現,[如果三個地方任何一個地方加了空格],會顯示以下三種不同的錯誤提示,最後的echo也沒有執行。

    <span style="color: #008000;">//</span><span style="color: #008000;">[1]( ! ) Parse error: syntax error, unexpected '<<' (T_SL) in D:\MyHTTP\Apache24\htdocs\testPHPmixHTML04.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:\&hellip;&hellip;\testPHPmixHTML04.php on line 14
    //[3]( ! ) Parse error: syntax error, unexpected '{' in D:\MyHTTP\Apache24\htdocs\testPHPmixHTML04.php on line 8</span>
登入後複製

這是因為(沒有找到標識符結束字符,將echo語句也包含到需要輸入的內容了。 

同時,因為沒有找到標識符結束字元所有的內容都不會輸出。 
當然,這只是我的理解,因為即使將echo語句放在print 前面,腳本也不會有內容內容。 
具體什麼原因,就留給大家去討論了。
 
 
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門推薦
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板