淺析PHP中處理HTML特殊字符轉換


我們在用PHP處理頁面顯示內容時,經常會遇到一些特殊字符轉換問題,如果處理不當就會導致頁面顯示混亂,不能得到目標效果。所以本文我們將和大家一起歸納總結PHP中處理HTML特殊字符轉換的常用方法。

HTML實體字符

我們知道HTML中有許多特殊的預留字符不能直接輸出到瀏覽器,必須把它們替換為相應的實體字符才可以正常顯示,比如空格、<、>等。

HTML常用字符實體一覽:


圖片來源:http://www.w3school.com.cn/html/html_entities.asp

我們在寫HTML代碼時,可以直接在代碼中將想顯示的特殊字符寫成實體字符:

 1 <html>
 2 <head>
 3  <meta charset="utf-8">
 4 </head>
 5 <body>
 6 <h3>HTML中超鏈接a標簽是這個樣子的:</h3>
 7 <p>&lt;a href=&#039;http://www.chanzhi.org&#039;&gt;蟬知企業門戶系統&lt;/a&gt;</p>
 8 
 9 </body>
10 </html>

顯示效果如下:


 

htmlentities()

在寫PHP代碼時,不能在字符串中直接寫實體字符,PHP提供了一個將HTML特殊字符轉換成實體字符的函數 htmlentities()

注:htmlentities()並不能轉換所有的特殊字符,是轉換除了空格之外的特殊字符,且單引號和雙引號需要單獨控制(通過第二個參數)。

第二個參數有三個值:

ENT_COMPAT(默認值):只轉換雙引號。

ENT_QUOTES:兩種引號都轉換。

ENT_NOQUOTES:兩種引號都不轉換。

(沒有只轉換單引號的參數選項)

1 <?php
2 $str = "<a href='http://www.chanzhi.org'>蟬知企業門戶系統©</a>";
3 
4 //使用htmlentities()函數將特殊字符轉換為實體字符
5 $str2 = htmlentities($str);
6 
7 echo $str2;
8 ?>

運行后前台顯示特殊字符正常,右擊查看頁面源代碼,可以看到PHP轉換后的實體字符內容。


 

前台瀏覽器顯示


查看頁面源代碼

htmlspecialchars()

htmlspecialchars()函數只對HTML語法字符進行轉換,目的是避免這些特殊的字符擾亂HTML代碼。
這里說的 HTML語法字符 只有5個:

顯示結果 描述 實體名稱
< 小於號 &lt;
> 大於號 &gt;
& 和號 &amp;
" 雙引號 &quot;
' 單引號  &apos;


htmlspecialchars()將其轉換成與其對應的實體字符。

我們還是以上面代碼為例,對比htmlentities和htmlspecialchars查看下效果:

1 <?php
2 $str = "<a href='http://www.chanzhi.org'>蟬知企業門戶系統©</a>";
3 
4 //使用htmlspecialchars()函數將特殊字符轉換為實體字符
5 $str2 = htmlspecialchars($str);
6 
7 echo $str2;
8 ?>

運行效果如下:

前台瀏覽器顯示

查看頁面源代碼

可以看到,htmlspecialchars只對上面5個特殊語法字符其作用,其他的特殊字符不進行轉換。

小結:

本文我們一起學習了解了PHP處理HTML中特殊字符的方法。對比htmlentities和htmlspecialchars兩個PHP函數的功能作用。如果大家對於字符處理還有其他疑問,歡迎和大家一起分享交流,我們共同學習,共同交流,共同進步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM