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 相关文章推荐
攻克CakePHP系列二 表单数据显示
Oct 22 PHP
纯真IP数据库的应用 IP地址转化成十进制
Jun 14 PHP
PHP中static关键字原理的学习研究分析
Jul 18 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
Jun 26 PHP
php输入流php://input使用示例(php发送图片流到服务器)
Dec 25 PHP
php生成excel列名超过26列大于Z时的解决方法
Dec 29 PHP
php curl 获取https请求的2种方法
Apr 27 PHP
smarty内部日期函数html_select_date()用法实例分析
Jul 08 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
php封装的验证码类分享
Feb 26 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
Aug 07 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 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事务处理实例详解
2014/07/11 PHP
PHP魔术方法的使用示例
2015/06/23 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
如何在PHP中读写文件
2020/09/07 PHP
js刷新框架子页面的七种方法代码
2008/11/20 Javascript
最简单的jQuery程序 入门者学习
2009/07/09 Javascript
学习面向对象之面向对象的术语
2010/11/30 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
javascript进行数组追加方法小结
2014/06/16 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
很实用的js选项卡切换效果
2016/08/12 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
2016/11/10 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
2018/08/31 Javascript
jQuery中each遍历的三种方法实例分析
2018/09/07 jQuery
node.JS事件机制与events事件模块的使用方法详解
2020/02/06 Javascript
Vue使用axios引起的后台session不同操作
2020/08/14 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
[02:24]DOTA2痛苦女王 英雄基础教程
2013/11/26 DOTA
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
python中对list去重的多种方法
2014/09/18 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
浅谈Python 递归算法指归
2019/08/22 Python
Python处理session的方法整理
2019/08/29 Python
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
介绍一下Linux中的链接
2016/05/28 面试题
参观接待方案
2014/03/17 职场文书
李开复演讲稿
2014/05/24 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书