Heim > php教程 > php手册 > Hauptteil

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

WBOY
Freigeben: 2016-08-15 16:49:41
Original
1784 Leute haben es durchsucht

php和html混编的三种方式

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

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

第一种是在HTML中加PHP。大段大段的html代码中,在各个需要执行php的地方。这种方法在ASP的程序中比较常见。 
例子: 
 
<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-size:15px;color:<span style="color: #008000;">#<span style="color: #008000;">000;font-family:Arial,Helvetica,sans-serif;}
        a{color:<span style="color: #008000;">#<span style="color: #008000;">039;text-decoration:none;}
    </style> 


         
        <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 style="color: #008000;"> >这是一个超链接</span></a>
        
    
Nach dem Login kopieren

 


第二种用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>'<span style="color: #000000;">; 
    } 
</span>?>
Nach dem Login kopieren
不过比较多见的还是加了转义符号的,个人觉得阅读起来不爽 
echo "<input type=\"submit\" value=\"确定\"/>"
Nach dem Login kopieren

 


第三种就是用(<<<)标记符了,这是在PHP168的模板代码中首次见到的。
<<<EOT 
EOT;
Nach dem Login kopieren

中间的文档直接输出,一个比较好理解的说法是“一个多行的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>?>
Nach dem Login kopieren


在上面的例子干净利索的输出了大段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>?>
Nach dem Login kopieren

我们会发现,[如果三个地方任何一个地方加了空格],会显示以下三种不同的错误提示,最后的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>
Nach dem Login kopieren

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

同时,因为没有找到标识符结束字符所有的内容都不会输出。 
当然,这只是我的理解,因为即使将echo语句放在print 前面,脚本也不会有内容内容。 
具体什么原因,就留给大家去讨论了。
 
 
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage