[转]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 ...
随机推荐
- 【LeetCode OJ】Gas Station
Problem link: http://oj.leetcode.com/problems/gas-station/ We can solve this problem by following al ...
- 用C语言实现评论系统设计 - 无数据库版
- C++类的运用 和 三大函数
在<数据结构与算法分析C++描述>一书中给出了三段代码,简单描述了C++类的接口.实现.与调用: #ifndef INTCELL_H_INCLUDED #define INTCELL_H_ ...
- Oracle sysdate
SYSDATE --可得到目前系统的时间 ex. select sysdate from dual; sysdate ---------- 20-SEP-07 ...
- Struts2 中遇到的问题
1. 警告: Could not find action or result: /Struts2Test/register.actionThere is no Action mapped for na ...
- CentOS x64安装Virtualbox
今天在CentOS 6.5 x64系统上装了个Virtualbox,这里记录下整个安装过程. 1.去官网下载Virtualbox及其扩展包,同时还要下载dkms,具体如下: Virtualbox:ht ...
- 搭建 hexo,在执行 hexo deploy 后,出现 error deployer not found:github 的错误
hexo 更新到3.0之后,deploy的type 的github需要改成git 改了之后执行npm install hexo-deployer-git --save 然后再部署试试 官网说明: ht ...
- Highcharts的基本属性和方法详解
Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习.个人网站和非商业用途使用. 目前Hig ...
- JavaWeb学习记录(十六)——防止表单重复提交
产生随机字符串进行验证,如果产生的和Session存储的相同则可以提交,提交后删除session对应的属性值:否则表单提交不成功 一.产生随机字符串的工具类 package web10.util; i ...
- URAL 1934 Black Spot(最短路)
Black Spot Time limit: 1.0 secondMemory limit: 64 MB Bootstrap: Jones's terrible leviathan will find ...