淺析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><a href='http://www.chanzhi.org'>蟬知企業門戶系統</a></p> 8 9 </body> 10 </html>
顯示效果如下:
htmlentities()
在寫PHP代碼時,不能在字符串中直接寫實體字符,PHP提供了一個將HTML特殊字符轉換成實體字符的函數
註: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個:
顯示結果 | 描述 | 實體名稱 |
---|---|---|
< | 小於號 | < |
> | 大於號 | > |
& | 和號 | & |
" | 雙引號 | " |
‘ | 單引號 | ' |
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函數的功能作用。如果大家對於字符處理還有其他疑問,歡迎和大家一起分享交流,我們共同學習,共同交流,共同進步。
淺析PHP中處理HTML特殊字符轉換