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