[转]php和html混编的三种方式
php和html混编的三种方式
以下内容转自:http://blog.i1728.com/post/110.html
原文标题是:《PHP的(<<》,新标题是我加的,文章里的红字也是我标注的;
----------------------------------------------
在后来的学习别人的代码,发现在需要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>
<?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;
优点是输出大段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) 标记符还有一点需要注意:
尤其容易犯的失误就是在标识符前加空格和缩进符,下面的例子什么都不会输出
<?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混编的三种方式的更多相关文章
- OC与Swift混编,三种场景的实现方式
多语言并存时期,混编成为一种必须的方式 ,在多场影中实现OC和Swift语言的并存原来是如此简单 第一种场景,App中实现混编 创建桥接文件*.h 新建一个桥接文件,New File 选择 Heade ...
- python和C语言混编的几种方式
Python这些年风头一直很盛,占据了很多领域的位置,Web.大数据.人工智能.运维均有它的身影,甚至图形界面做的也很顺,乃至full-stack这个词语刚出来的时候,似乎就是为了描述它. Pytho ...
- PHP/HTML混写的四种方式总结
PHP/HTML混写的四种方式总结 一.总结 一句话总结: 注意点: 1.双引号里面解析变量:echo "$Content" 2.HEREDOC和NOWDOC的关系:类似于双引号包 ...
- PHP/HTML混写的四种方式
[整理]PHP/HTML混写的四种方式 PHP作为一款后端语言,为了输出给浏览器让浏览器呈现出来,无可避免的要输出HTML代码,下文介绍下我用过的三种PHP/HTML混编方法 1.单/双引号包围法 ...
- 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 ...
- OpenCV4Android释疑: 透析Android以JNI调OpenCV的三种方式(让OpenCVManager永不困扰)
OpenCV4Android释疑: 透析Android以JNI调OpenCV的三种方式(让OpenCVManager永不困扰) 前文曾详细探讨了关于OpenCV的使用,原本以为天下已太平.但不断有人反 ...
- 三种方式实现观察者模式 及 Spring中的事件编程模型
观察者模式可以说是众多设计模式中,最容易理解的设计模式之一了,观察者模式在Spring中也随处可见,面试的时候,面试官可能会问,嘿,你既然读过Spring源码,那你说说Spring中运用的设计模式吧, ...
- WiFi攻击的三种方式
WiFi的安全问题已经引起了不少的使用者重视,甚至已经出现草木皆兵的现象.那么黑客到底是如何做到绕过身份验证来获取WiFi使用权的呢?主要有以下三种方式,其中最后一种方式十分简单. WiFi的安全问题 ...
- jquery调用click事件的三种方式
第一种方式: $(document).ready(function(){ $("#clickme").click(function(){ alert("Hello Wor ...
随机推荐
- C# 线程问题
一:概述和概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行.一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为"主线程&quo ...
- codeforces #round363 div2.C-Vacations (DP)
题目链接:http://codeforces.com/contest/699/problem/C dp[i][j]表示第i天做事情j所得到最小的假期,j=0,1,2. #include<bits ...
- SQL基础,与数据类型;
net start mssqlserver 开启数据库: net stop mssqlserver 关闭数据库: net pause mssqlserver 暂停数据库: net continu ...
- java学习第六天
目标 1. 块 2. GC(了解) 3. package import 4. 封装 一.块 {} 分类 1.普通块 作用: 组织代码.解决变量的作用域.节约了内存. 在同一个作用域内,不能声 ...
- 转: ASP.NET+ExtJs4.0+表单提交submit,上传图片到服务器
http://blog.csdn.net/lmaohuanl/article/details/6792057 <!DOCTYPE html PUBLIC "-//W3C//DTD XH ...
- Ubuntu14.04 64位运行32位程序
最近公司新增的机器安装Ubuntu14.04 64bit导致之前在32bit下编译的Qt工具软件无法运行. 于是google的了一下找到一些解决办法,但不能保证全部32bit的Qt程序都能正常,测试了 ...
- Java NIO UDP DEMO
今天有人问我Netty的UDP怎么使用,我自己尝试的去写一个Demo,在网上搜索了一下,关于Netty的UDP实现还是很少的,所以,今天写下这篇文章用来记录今天的一个简单Demo实现 不使用Netty ...
- 【转】Hbase shell 常用命令
不定时更新常用好用命令. --------------------------------------------------------------------------------------- ...
- static讲解
static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被stati ...
- ZOJ 1101 Gamblers
原题链接 题目大意:一群人聚众赌博.每个人先分别押注不同的金额,可以相互借钱.开奖之后,如果某个人的押注的金额正好等于任何其他三个人金额总和,那这个人就赢得其他三个人的赌注.如果同时有两个以上的赢家, ...