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. Java 集合深入理解(4):List<E> 接口

    点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 蓝瘦!香菇! 连着加班几天,醉了.学学 List 放松下! 在 Java 集合深入理解:Collection 中我们熟悉了 ...

  2. 解决magento新闻邮件发送一直处于“正在发送”状态问题

    今天在弄magento新闻邮件发送时候发现,单个邮件发送完全没有问题,但是新闻邮件订阅死活都不成功,国内国外的帖子都翻了一遍没有用,最后还是得靠自己了,于是开始慢慢找问题   首先想到是不是cront ...

  3. magneto创建运费模板

    Magento系统自带了大概7种运费方式:平价.运费表.免运费.ups.usps.fedex.dhl等.不过这些依然无法满足我们的需求,这时候就需要创建一个shipping module 来实现了.创 ...

  4. I.MX6 32G SD卡测试

    /*********************************************************************** * I.MX6 32G SD卡测试 * 说明: * 这 ...

  5. linux的ftp使用方法

    linux下常用FTP命令 1. 连接ftp服务器 以下是在服务器为Ubuntu环境下操作: (1)首先需要安装vsftp软件,已经安装的可跳过. 1.更新软件源 #apt-get  update 2 ...

  6. mysql explain用法和结果的含义(转)

    重点是第二种用法,需要深入的了解. 先看一个例子: mysql> explain select * from t_order; +----+-------------+---------+--- ...

  7. 【字体区别】Serif和Sans Serif

    [字体区别]Serif和Sans Serif 在西方国家罗马字母阵营中,字体分为两大种类:Sans Serif和Serif,打字机体虽然也属于Sans Serif,但由于是等宽字体,所以另外独立出Mo ...

  8. haar-like特征(转载)

    浅析人脸检测之Haar分类器方法  [补充] 这是我时隔差不多两年后, 回来编辑这篇文章加的这段补充, 说实话看到这么多评论很是惊讶, 有很多评论不是我不想回复, 真的是时间久了, 很多细节我都忘记了 ...

  9. HS光流算法详解<转载>

    HS 光流法详解 前言 本文较为详细地介绍了一种经典的光流法 - HS 光流法. 光流法简介 当人的眼睛与被观察物体发生相对运动时,物体的影像在视网膜平面上形成一系列连续变化的图像,这一系列变化的图像 ...

  10. Js 操作Json

    JSON是一个提供了stringify和parse方法的内置对象,前者用于将js对象转化为符合json标准的字符串,后者将符合json标准的字符串转化为js对象. parse方法相当于eval()方法 ...