PHP項目開發過程中,經常需要對一些特殊字元進行處理,否則這些字元可能無法按輸出或輸出亂碼。下面對HTML標記中的一些常用特殊字元進行轉換。
q & 轉換為 &
q " 轉換為 "
q ' 轉換為 '
q < 轉換為 <
q > 轉換為 >
其中,“&”為HTML元素,“&”為顯示的字串。例如,若想在頁面正常輸出如下代碼:
<a href='http://www.mingrisoft.com'>明日科技</a>
則需要在HTML代碼中輸入:“< a href='http://www.mingrisoft.com'>明日科技</a>”,否則,將不能按原義輸出。
PHP提供了下面的函數來自動轉換為HTML元素。
1.htmlspecialchars()函數
該函數可以將某些特定的字元轉換成在HTML中的顯示方式。文法如下:
string htmlspecialchars(string str[,int quote_style[,string charset]]);
該函數將特殊字元轉成HTML的字串格式( &....;)。該函數只轉換上面列出5種特殊字元。
樣本:
使用htmlspecialchars()函數將留言中特殊字元轉成HTML的字串格式,程式碼如下:
<?php
$word="<html><head><title><快樂豆吧留言>:</title></head></html>八月-中秋-不送禮,發條簡訊£祝福£你,&健康快樂&長伴你,¤好運¤和你不分離,還有讓我告訴你,$財神¥已經跟隨你。";
echo htmlspecialchars("$word");
?>
本樣本的運行結果:<html><head><title><快樂豆吧留言>:</title></head></html>八月-中秋-不送禮,發條簡訊£祝福£你,&健康快樂&長伴你,¤好運¤和你不分離,還有讓我告訴你,$財神¥已經跟隨你。
注意:因為在原始碼中加入了htmlspecialchars()函數,所以在留言資訊中代碼沒有被解釋執行。
2.htmlentities()函數
該函數用於把所有的HTML元素轉換為顯示字串。文法如下:
string htmlentities(string str[,int quote_style[,string charset]]);
3.html_entity_decode()函數
該函數用於把顯示字串轉化為HTML元素。文法如下:
string html_entity_decode(string str[,int quote_style[,string charset]]);
str:表示原始字串。
quote_style:選擇性參數,取值範圍為如下:
q ENT_COMPAT:只轉換“&、"、<、>”4種符號。
q ENT_QUOTES:只轉換“&、'、"、<、>”5種符號。
q ENT_NOQ UOTES:只轉換“&、<、>”3種符號。
charset:指定了在轉換過程中應用的字元集。
PHP 4.0及以上版本所支援的字元集參數如表1所示。
表1 PHP 4.0及以上版本所支援的字元集參數
字 符 集
別 名
說 明
ISO-8859-1
ISO-8859-1
西歐字元集
ISO-8859-15
ISO-8859-15
西歐字元集擴充
UTF-8
ASCII字元集
KOI8-R
Koi8-ru,koi8r
俄羅斯
cp1252
Windows-1252,1252
西歐字元集,Windows系統預設
GB2312
936
簡體中文,國際標準字元集
Shift-JIS
SJIS,932
日文
EUCJP
EUCJP
日文
樣本:
使用htmlentities()函數得到一個HTML語句的顯示字串,然後再使用html_entity_decode()函數重新把顯示字串轉回HTML元素。程式碼如下:
<?php
$word="<font color='#886699'>總有許多許多話,想說給你聽</font>";
echo htmlentities($word,ENT_COMPAT,"GB2312")."<br>";
echo html_entity_decode($word);
?>
本樣本的運行結果如下:
<font color='#886699'>總有許多許多話,想說給你聽</font>
總有許多許多話,想說給你聽