php和html混编的三种方式

以下内容转自:http://blog.i1728.com/post/110.html

原文标题是:《PHP的(<<》,新标题是我加的,文章里的红字也是我标注的;

----------------------------------------------

07月22日 分类: 学习笔记 8条评论 16532 ℃

 
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:\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:\……\testPHPmixHTML04.php on line 14
//[3]( ! ) Parse error: syntax error, unexpected '{' in D:\MyHTTP\Apache24\htdocs\testPHPmixHTML04.php on line 8

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

同时,因为没有找到标识符结束字符所有的内容都不会输出。 
当然,这只是我的理解,因为即使将echo语句放在print <<<EOT 
前面,脚本也不会有内容内容。 
具体什么原因,就留给大家去讨论了。

 
 

[转]php和html混编的三种方式的更多相关文章

  1. OC与Swift混编,三种场景的实现方式

    多语言并存时期,混编成为一种必须的方式 ,在多场影中实现OC和Swift语言的并存原来是如此简单 第一种场景,App中实现混编 创建桥接文件*.h 新建一个桥接文件,New File 选择 Heade ...

  2. python和C语言混编的几种方式

    Python这些年风头一直很盛,占据了很多领域的位置,Web.大数据.人工智能.运维均有它的身影,甚至图形界面做的也很顺,乃至full-stack这个词语刚出来的时候,似乎就是为了描述它. Pytho ...

  3. PHP/HTML混写的四种方式总结

    PHP/HTML混写的四种方式总结 一.总结 一句话总结: 注意点: 1.双引号里面解析变量:echo "$Content" 2.HEREDOC和NOWDOC的关系:类似于双引号包 ...

  4. PHP/HTML混写的四种方式

    [整理]PHP/HTML混写的四种方式   PHP作为一款后端语言,为了输出给浏览器让浏览器呈现出来,无可避免的要输出HTML代码,下文介绍下我用过的三种PHP/HTML混编方法 1.单/双引号包围法 ...

  5. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

  6. OpenCV4Android释疑: 透析Android以JNI调OpenCV的三种方式(让OpenCVManager永不困扰)

    OpenCV4Android释疑: 透析Android以JNI调OpenCV的三种方式(让OpenCVManager永不困扰) 前文曾详细探讨了关于OpenCV的使用,原本以为天下已太平.但不断有人反 ...

  7. 三种方式实现观察者模式 及 Spring中的事件编程模型

    观察者模式可以说是众多设计模式中,最容易理解的设计模式之一了,观察者模式在Spring中也随处可见,面试的时候,面试官可能会问,嘿,你既然读过Spring源码,那你说说Spring中运用的设计模式吧, ...

  8. WiFi攻击的三种方式

    WiFi的安全问题已经引起了不少的使用者重视,甚至已经出现草木皆兵的现象.那么黑客到底是如何做到绕过身份验证来获取WiFi使用权的呢?主要有以下三种方式,其中最后一种方式十分简单. WiFi的安全问题 ...

  9. jquery调用click事件的三种方式

    第一种方式: $(document).ready(function(){ $("#clickme").click(function(){ alert("Hello Wor ...

随机推荐

  1. JQuery源码分析(六)

    方法链式调用的实现 写的更少,做的更多.是JQuery的核心理念. 那么链式方法的设计与这个核心理念不谋而合.那么从深层次考虑这种设计其实就是一种Internal DSL. DSL是指Domain S ...

  2. ERP登录(八)

    登录的存储过程: ALTER PROCEDURE [dbo].[UserLogin] @userid int output, @LoginName nvarchar(50), @Password nv ...

  3. magento 去掉index.php .html

    首先应该确保你的服务器环境,达到了magento的运行需求,若你是使用的是magento专用空间就不必担心了,若不是请查看我以前的文章,检测你的运行环境(http://www.hellokeykey. ...

  4. Magento请求分发与控制器

    Magento请求分发与控制器 Magento使用的是MVC结构,模型-试图-控制器结构,这样更好的实现显示逻辑和数据,业务逻辑的分离,更好的适合开发! 下面为传统的mvc结构 URL请求被一个PHP ...

  5. magento关于站点搬家,换空间

    1,先把原来空间的文件全部压缩后(有些不要的就不要压缩)下载下来,然后传到新空间去,注意下载下来后核对一下是否大小一样,建议使用ftp工具下载, 2,同样把原来空间的数据库打包下来,再在新空间创建一个 ...

  6. C++学习笔记1:高级语言

    笔记参考资料:http://www.learncpp.com/ 1.high languages:C,C++,Pascal,Java,Javascript,Perl... compiling proc ...

  7. Node.js简单介绍并实现一个简单的Web MVC框架

    编号:1018时间:2016年6月13日16:06:41功能:Node.js简单介绍并实现一个简单的Web MVC框架URL :https://cnodejs.org/topic/4f16442cca ...

  8. Day02_JAVA语言基础第二天

    1.常量(理解) 1.概念         在程序运行过程中,其值不会发生改变的量 2.分类(掌握) A .字面值常量 整数常量:1,2,-3 小数常量:2.3,-232.3 字符常量:'A' 字符串 ...

  9. 世纪互联运营的Microsoft Azure正式支持FreeBSD虚拟机镜像

    自2012年开始,微软云计算与企业事业部和Citrix思杰,NetApp达成合作,共同开发出第一版针对Hyper-V虚拟设备驱动以及相关的用户态程序,并将此称之为集成服务(Integration Se ...

  10. php防注入留言板(simple)

    新手学php,试手案例便是留言板.以前未连接数据库时,我是直接将用户输入的留言写入到一个txt,然后再从txt读取显示(~.~别鄙视). 最近学习了php访问MySQL数据库的一些知识,重写了一下留言 ...