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

1.单/双引号包围法

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

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

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

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

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

输出

Hello!
$Content

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

这样书写的缺点有两点

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

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

2.使用HEREDOC/NOWDOC

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

下面介绍HEREDOC和NOWDOC的用法

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

也可以参考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混写的四种方式相关推荐

  1. python与c混合编程 版本_python与C、C++混编的四种方式(小结)

    混编的含义有两种, 一种是在python里面写C 一种是C里面写python 本文主要是进行简化,方便使用. ############################################# ...

  2. python与C、C++混编的四种方式

    混编的含义有两种, 一种是在python里面写C 一种是C里面写python 本文针对第一种,参考链接来自: https://www.cnblogs.com/apexchu/p/5015961.htm ...

  3. python和c混编_python与C、C++混编的四种方式(小结)

    混编的含义有两种, 一种是在python里面写C 一种是C里面写python 本文主要是进行简化,方便使用. ############################################# ...

  4. python c++情侣网名含义_python与C、C++混编的四种方式(小结)

    混编的含义有两种, 一种是在python里面写C 一种是C里面写python 本文主要是进行简化,方便使用. ############################################# ...

  5. golang 读写文件的四种方式

    读文件 读取的文件放在file/test:也就是file包下的test这个文件,里面写多一点文件 读文件方式一:利用ioutil.ReadFile直接从文件读取到[]byte中 func Read0( ...

  6. Android:按键响应方式第一种onClick属性,第二种方法接口类,第三种方式匿名内部类,第四种方式Activity

    一.在xml 中设置按键的onClick 绑定的函数 新建一个工程 然后在相关的页面添加一个Button 运行一下 实际上,现在这个按键一,我们去运行的时候,他是没有任何的反馈的,我们按完它,他没有任 ...

  7. SpringMVC学习(六)——Spring四种方式整合MyBatis

    文章目录 1.引言 2.Spring整合Mybatis 2.1.常规整合 2.1.1.项目的结构 2.1.2.applicationContext.xml配置 2.1.3.UserInfoMapper ...

  8. Linux C++多线程同步的四种方式

    目录 一.互斥锁 二.条件变量 三.读写锁 原文链接:Linux C++多线程同步的四种方式(非常详细)_Y先森0.0-CSDN博客 背景问题:在特定的应用场景下,多线程不进行同步会造成什么问题? 通 ...

  9. angular cli 切换 css_漫谈 Angular 定制主题的四种方式

    主题定制是提升用户体验最常见的一种,前端框架众多,主题定制方式却异曲同工,下面来介绍一下 Angular 中实现主题定制的四种方式. 1. webpack loader React 版本的 Ant D ...

最新文章

  1. OvS、OvS-DPDK、VPP 基准性能对比
  2. Silverlight4.0(9) 之 分页控件轻量级的Session
  3. 搜索引擎Solr系列(二): Solr6.2.1 从MySql中导入数据
  4. 前端学习(225):尺寸属性
  5. java查询未提交事务的数据_Jfinal同一事务中已插入的数据记录在事务未提前前查询不到?...
  6. 【AI视野·今日CV 计算机视觉论文速览 第214期】Mon, 7 Jun 2021
  7. hive 修改分桶数 分桶表_疯狂Hive之DDL操作二(三)
  8. TCP/IP网络编程(3)
  9. MEME将于4月12日推出V2版本
  10. 边工作边刷题:70天一遍leetcode: day 51
  11. 3、ORBSLAM闭环检测终局之战之sim3计算流程,确定是否检测到闭环
  12. Java异常————argument type mismatch
  13. SQL语句编写经典50题
  14. 婴儿奶瓶温度计的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. Win10 DNS解析失败解决方法
  16. Python学习笔记——照片换底色
  17. Struts验证框架与一些技巧
  18. 什么是节流(throttling)和防抖(debouncing)?
  19. 数字人民币试点目前呈现“全面开花”态势
  20. cad标注桩号lisp_CAD插件标桩号的AutoLISP程序语言求解释并译成中文,谢谢

热门文章

  1. java.lang.IllegalArgumentException: Could not resolve placeholder ‘stu.age‘ in value “${stu.age}
  2. Android之播放一首简单的音乐
  3. Struts2之文件下载
  4. project文件_移动和发出时通过UploadsReWriter读取的任意文件
  5. vue —— vuex namespaced模块化编码
  6. java在线聊天项目ppt_基于JavaEE的在线聊天聊天.ppt
  7. apache 支持php urlmanager,Yii中urlManager的配置
  8. ext的treepanel的item判断是否为leaf
  9. PHP中||与or的区别
  10. 渐进增强和优雅降级有什么区别