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书写的实现代码可读性非常的高,这使前/后端的分离也更加的高效和便捷。有兴趣的同学可以去搜索了解
- 概要
- PHP8 类的新特性
- 第1节 认识PHP
- 第2节 安装PHP8
- 第3节 基础语法
- 第4节 PHP与HTML混编
- 第5节 数据类型
- 第6节 数组
- 6-1 基础语法
- 6-2 php html 混编(数组)
- 第7节 php 条件判断
- 第8节 函数
- 第9节 运算符
- 第10节 循环
- 第11节 新特性:JIT
- 第12节 PHP 超全局变量
- 第13节 类与对象
- 13-1 基础
- 13-2 类的三大特性
- 13-3 拓展知识
- 第14节 命名空间
- 第15节 MySql 数据库
- 15-1 数据库简介
- 15-2 常用语句
- 15-3 MYSQL 运算符
- 15-4 PHP PDO操作数据库
- 16 Cookie和Session