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 相关文章推荐
discuz程序的PHP加密函数原理分析
Aug 05 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
Apr 08 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
Jun 13 PHP
PHP按行读取文件时删除换行符的3种方法
May 04 PHP
php解析http获取的json字符串变量总是空白null
Mar 02 PHP
Linux系统递归生成目录中文件的md5的方法
Jun 29 PHP
php算法实例分享
Jul 14 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
php array_merge_recursive 数组合并
Oct 26 PHP
详解配置 Apache 服务器支持 PHP 文件的解析
Feb 15 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 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无限分类的类
2007/01/02 PHP
ThinkPHP php 框架学习笔记
2009/10/30 PHP
php实现的通用图片处理类
2015/03/24 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
Js的MessageBox
2006/12/03 Javascript
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
2010/12/19 Javascript
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
jQuery中nextAll()方法用法实例
2015/01/07 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
js 轮播效果实例分享
2016/12/28 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
值得分享和收藏的xmlplus组件学习教程
2017/05/05 Javascript
JS实现点击Radio动态更新table数据
2017/07/18 Javascript
jQuery实现的简单日历组件定义与用法示例
2018/12/24 jQuery
微信小程序实现点击页面出现文字
2020/09/21 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
python共享引用(多个变量引用)示例代码
2013/12/04 Python
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
基于ID3决策树算法的实现(Python版)
2017/05/31 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
用python打印菱形的实操方法和代码
2019/06/25 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
django在开发中取消外键约束的实现
2020/05/20 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
JNI的定义
2012/11/25 面试题
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
前台接待岗位职责
2013/12/03 职场文书
上课睡觉检讨书
2014/01/28 职场文书
三八妇女节主持词
2015/07/04 职场文书
Python面向对象之内置函数相关知识总结
2021/06/24 Python