PHP作为一款后端语言,为了输出给浏览器让浏览器呈现出来,无可避免的要输出HTML代码,下文介绍下我用过的三种PHP/HTML混编方法。 # 一、**单/双引号包围法** ~~~php <?php echo ' <!DOCTYPE html> <html> <head> <title> </title> </head> <body> <span>测试页面</span> </body> </html> '; ~~~ 这样是最简单的一种方法了,直接用单引号包装上就行了 至于双引号和单引号的区别,就在于前者解析引号内的变量,而后者不解析引号内的变量,参看下面的例子 ~~~php <?php $Content='Hello!'; echo "$Content"; echo '<br>'; echo '$Content'; ~~~ 输出 1 Hello! 2 $Content 由此可见,用双引号包围的字符串中的变量名自动解析为了变量值,而用单引号包围则依然显示变量名。如果输出内容中包含单/双引号将极难处理,因为PHP无法判断这个引号是属于程序的还是输出内容的,所以会报错。 # 二、**使用HEREDOC/NOWDOC** HEREDOC和NOWDOC是PHP5.3开始支持的一种新特性,它允许在程序中使用一种自定义的标志符来包围文本,而HEREDOC和NOWDOC的关系就类似于双引号包围和单引号包围一样,**前者解析区块内的变量,而后者不解析区块内的变量 ** 下面介绍HEREDOC和NOWDOC的用法 ~~~php <?php $Content='Hello!'; //下面写出了一个HEREDOC,其中标识LABEL可以自定义为任何字符串,但要保证开头的标识和结尾的标识一样 echo <<<LABEL $Content LABEL; //结尾的方法:另起一行,打上LABEL。注意结尾的标识前面和后面不要插入任何字符,空格也不行 echo '<br>';//为了演示方便换行 //NOWDOC和HEREDOC的书写方式差别在于NOWDOC的标识符需要用单引号包围 echo <<<'LABEL' $Content LABEL; //其他无异 ~~~ # 三、 **HTML中嵌入PHP程序块(推荐)** 这是一种非常合适的办法,并且这种方法广泛用在了诸如WordPress模板等场合中。书写起来也较为方便,直接在需要输出的地方写上相关的代码就行了 原html代码 ~~~php <!DOCTYPE html> <html lang="zh-CN"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>php8学习</title> <meta name="keywords" content="这里是keywords" /> <meta name="description" content="愿意把知识分享给大家。" /> </head> <body> <div> <h1 class="site-title"> <a href="/" title="">php是世界上最好的程序语言</a> </h1> <h2 class="site-description">一起学习php,愿意把知识分享给大家。</h2> </div> <nav> <ul class="nav-menu"> <li> <a href="/index.html">首页</a> </li> <li> <a href="/index.html?cate=1">服务器</a> </li> <li> <a href="/index.html">PHP</a> </li> <li> <a href="/index.html">前端</a> </li> <li> <a href="/index.html">Thinkphp</a> </li> <li> <a href="/index.html">Layui</a> </li> <li> <a href="/index.html">小程序</a> </li> </ul> </nav> </body> </html> ~~~ 下面是混编后的代码( 需要把文件的后缀名html改为`php) ~~~php <?php $title = 'php8学习'; $key = '这里是keywords'; $dec = '愿意把知识分享给大家。'; $content = '一起学习php,愿意把知识分享给大家。'; $cate = '服务器'; ?> <!DOCTYPE html> <html lang="zh-CN"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?php echo $title; ?></title> <meta name="keywords" content="<?php echo $key; ?>"/> <meta name="description" content="<?php echo $dec; ?>" /> </head> <body> <div> <h1 class="site-title"> <a href="/" title="">php是世界上最好的程序语言</a> </h1> <h2 class="site-description"><?php echo $content; ?></h2> </div> <nav> <ul class="nav-menu"> <li> <a href="/index.html">首页</a> </li> <li> <a href="/index.html?cate=1"><?php echo $cate; ?></a> </li> <li> <a href="/index.html">PHP</a> </li> <li> <a href="/index.html">前端</a> </li> <li> <a href="/index.html">Thinkphp</a> </li> <li> <a href="/index.html">Layui</a> </li> <li> <a href="/index.html">小程序</a> </li> </ul> </nav> </body> </html> ~~~ 备注;由于前端的重要性在整个Web开发中日益上升,现在前/后端工程师逐渐在分离成两个职业,所以说为了确保前/后端工程师能够相互配合,使前端开发和后端开发出来的东西对接更完美,逐渐催生出了一系列前端模板引擎,比如Smarty。使用Smarty书写的实现代码可读性非常的高,这使前/后端的分离也更加的高效和便捷。有兴趣的同学可以去搜索了解