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


Posted in PHP onFebruary 27, 2017

PHP作为一款后端语言,为了输出给浏览器让浏览器呈现出来,无可避免的要输出HTML代码,下文介绍下我用过的三种PHP/HTML混编方法

1、单/双引号包围法

这是最初级的方法了,用法就像下面这样

<?php
 echo '
 <!DOCTYPE html>
 <html>
   <head>
     <title> </title>
   </head>
   <body>
     <span>测试页面</span>
   </body>
 </html>
 ';
?>

这样是最简单的一种方法了,直接用单引号包装上就行了

至于双引号和单引号的区别,就在于前者解析引号内的变量,而后者不解析引号内的变量,参看下面的例子

<?php
 $Content='Hello!';
 echo "$Content";
 echo '<br>';
 echo '$Content';
 ?>

输出

1 Hello!
2 $Content

由此可见,用双引号包围的字符串中的变量名自动解析为了变量值,而用单引号包围则依然显示变量名

这样书写的缺点有两点

1、如果输出内容中包含单/双引号将极难处理,因为PHP无法判断这个引号是属于程序的还是输出内容的,所以会报错

2、这样书写一些现代文本编辑器(如SublimeText)将无法对引号包围的输出的内容进行语法着色,如果出现一些格式问题将极难发现。图中为SublimeText3的一张截图,上面的是正常的着色,下面则是用引号包围的着色

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

2、使用HEREDOC/NOWDOC

HEREDOC和NOWDOC是PHP5.3开始支持的一种新特性,它允许在程序中使用一种自定义的标志符来包围文本,而HEREDOC和NOWDOC的关系就类似于双引号包围和单引号包围一样,前者解析区块内的变量,而后者不解析区块内的变量

下面介绍HEREDOC和NOWDOC的用法

<?php
 $Content='Hello!';
 
 //下面写出了一个HEREDOC,其中标识LABEL可以自定义为任何字符串,但要保证开头的标识和结尾的标识一样
 echo <<<LABEL
 $Content
 LABEL;
 //结尾的方法:另起一行,打上LABEL。注意结尾的标识前面和后面不要插入任何字符,空格也不行
 
 echo '<br>';//为了演示方便换行
 
 //NOWDOC和HEREDOC的书写方式差别在于NOWDOC的标识符需要用单引号包围
 echo <<<'LABEL'
 $Content
 LABEL;
 //其他无异
 
 ?>

也可以参考PHP.net上的关于这两个的wiki:https://wiki.php.net/rfc/heredoc-with-double-quotes

用HEREDOC/NOWDOC书写极好的解决了包围引号的问题,但依然没有解决语法着色失效的问题

3、HTML中嵌入PHP程序块(推荐)

这是一种非常合适的办法,并且这种方法广泛用在了诸如WordPress模板等场合中。书写起来也较为方便,直接在需要输出的地方写上相关的代码就行了,就像下面这样

<?php
 
 //首先在这里写好相关的调用代码
 function OutputTitle(){
   echo 'TestPage';
 }
 function OutputContent(){
   echo 'Hello!';
 }
 
 //然后再下面调用相关函数就可以了
 ?>
 
 <!DOCTYPE html>
 <html>
   <head>
     <title><?php OutputTitle(); ?></title>
   </head>
   <body>
     <span><?php OutputContent(); ?></span>
   </body>
 </html>

我认为这种方法是在这三种方法中最好的,但是这样做的缺点是如果这样的代码块一多了就会严重影响程序阅读。

4、使用前端模板引擎

由于前端的重要性在整个Web开发中日益上升,现在前/后端工程师逐渐在分离成两个职业,所以说为了确保前/后端工程师能够相互配合,使前端开发和后端开发出来的东西对接更完美,逐渐催生出了一系列前端模板引擎,比如Smarty。使用Smarty书写的实现代码可读性非常的高,这使前/后端的分离也更加的高效和便捷。有兴趣的同学可以去搜索了解

以上这篇PHP/HTML混写的四种方式总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP和XSS跨站攻击的防范
Apr 17 PHP
php中静态类与静态变量用法的区别分析
Jan 15 PHP
浅谈PHP中单引号和双引号到底有啥区别呢?
Mar 04 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
May 20 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
PHP实现SMTP邮件的发送实例
Sep 27 PHP
PHP实现PDO操作mysql存储过程示例
Feb 13 PHP
浅谈PHP中的Trait使用方法
Mar 22 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 PHP
php策略模式简单示例分析【区别于工厂模式】
Sep 25 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
Dec 20 PHP
老生常谈文本文件和二进制文件的区别
Feb 27 #PHP
php实现数据库的增删改查
Feb 26 #PHP
php查询及多条件查询
Feb 26 #PHP
php批量删除操作代码分享
Feb 26 #PHP
浅谈PHP的反射API
Feb 26 #PHP
CentOS 上搭建 PHP7 开发测试环境
Feb 26 #PHP
php封装的验证码类分享
Feb 26 #PHP
You might like
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
2008/11/14 PHP
php实现文件编码批量转换
2014/03/10 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
avalon js实现仿google plus图片多张拖动排序附源码下载
2015/09/24 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
JavaScript生成指定范围的时间列表
2018/03/19 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
微信小程序 弹窗输入组件的实现解析
2019/08/12 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
vue3.0中使用element的完整步骤
2021/03/04 Vue.js
在漏洞利用Python代码真的很爽
2007/08/26 Python
python的三目运算符和not in运算符使用示例
2014/03/03 Python
Python实现购物车购物小程序
2018/04/18 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
学前教育教师求职自荐信
2013/09/22 职场文书
益达广告词
2014/03/14 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
2014年环境整治工作总结
2014/12/10 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
Html5调用企业微信的实现
2021/04/16 HTML / CSS
python数字图像处理之图像的批量处理
2022/06/28 Python