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 date()日期时间函数详解
May 16 PHP
php 数组使用详解 推荐
Jun 02 PHP
php中如何同时使用session和cookie来保存用户登录信息
Jul 05 PHP
自己写了一个php检测文件编码的函数
Apr 21 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
Apr 29 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
Jun 12 PHP
PHP数组操作类实例
Jul 11 PHP
php用正则判断是否为数字的方法
Mar 25 PHP
PHP下载文件的函数实例代码
May 18 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
PHP PDOStatement::rowCount讲解
Feb 01 PHP
php实现微信分享朋友链接功能
Feb 18 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
基于mysql的论坛(3)
2006/10/09 PHP
php获取当月最后一天函数分享
2015/02/02 PHP
php统计数组元素个数的方法
2015/07/02 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
js和php如何获取当前url的内容
2013/09/22 Javascript
JQuery获取或设置ckeditor的数据(示例代码)
2013/11/15 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
JavaScript之DOM_动力节点Java学院整理
2017/07/03 Javascript
Vue ElementUi同时校验多个表单(巧用new promise)
2018/06/06 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
[01:38]【DOTA2亚洲邀请赛】Sumail——梦开始的地方
2017/03/03 DOTA
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
Python 序列的方法总结
2016/10/18 Python
Python中input与raw_input 之间的比较
2017/08/20 Python
python爬虫基本知识
2018/03/05 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
Pytorch Tensor基本数学运算详解
2019/12/30 Python
python实现双色球随机选号
2020/01/01 Python
Python读写压缩文件的方法
2020/07/30 Python
python xlsxwriter模块的使用
2020/12/24 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
台湾菁英交友:结识黄金单身的台湾人
2018/01/22 全球购物
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
敏捷开发的主要原则都有哪些
2015/04/26 面试题
标准的毕业生自荐信
2014/04/20 职场文书
团干部培训方案
2014/06/03 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
企业整改报告范文
2014/11/08 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
Python实现提取PDF简历信息并存入Excel
2022/04/02 Python
Python使用openpyxl模块处理Excel文件
2022/06/05 Python