把預先定義的字元"<" (小於)和">" (大於)轉換為HTML 實體:
<?php $str = " This is some <b>bold</b> text. " ; echo htmlspecialchars ( $str ) ; ?>上面程式碼的HTML 輸出如下(查看原始碼):
< ! DOCTYPE html > < html > <身體> This is some < b > bold < /b > text. </身體> </ html >上面程式碼的瀏覽器輸出如下:
This is some <b>bold</b> text.htmlspecialchars() 函數把一些預先定義的字元轉換成HTML 實體。
預定義的字元是:
& (和號)成為&
" (雙引號)變成"
' (單引號)成為'
< (小於)成為<
> (大於)成為>
提示:要把特殊的HTML 實體轉換回字符,請使用htmlspecialchars_decode() 函數。
htmlspecialchars( string,flags,character-set,double_encode )
參數 | 描述 |
---|---|
string | 必需。規定要轉換的字串。 |
flags | 可選。規定如何處理引號、無效的編碼以及使用哪種文件類型。 可用的引號類型: ENT_COMPAT - 預設。僅編碼雙引號。 ENT_QUOTES - 編碼雙引號和單引號。 ENT_NOQUOTES - 不編碼任何引號。 無效的編碼: ENT_IGNORE - 忽略無效的編碼,而不是讓函數傳回一個空的字串。應盡量避免,因為這可能對安全性有影響。 ENT_SUBSTITUTE - 把無效的編碼替換成一個指定的帶有Unicode 替代字符U+FFFD(UTF-8)或&#FFFD; 的字符,而不是傳回一個空的字串。 ENT_DISALLOWED -把指定文件類型中的無效代碼點替換成Unicode 替代字元U+FFFD(UTF-8)或&#FFFD;。 規定使用的文檔類型的附加flags: ENT_HTML401 - 預設。作為HTML 4.01 處理程式碼。 ENT_HTML5 - 作為HTML 5 處理程式碼。 ENT_XML1 - 作為XML 1 處理程式碼。 ENT_XHTML - 作為XHTML 處理程式碼。 |
character-set | 可選。一個規定了要使用的字元集的字串。 允許的值: UTF-8 - 預設。 ASCII 相容多位元組的8 位元Unicode ISO-8859-1 - 西歐 ISO-8859-15 - 西歐(加入歐元符號+ ISO-8859-1 中遺失的法文和芬蘭字母) cp866 - DOS 專用Cyrillic 字元集 cp1251 - Windows 專用Cyrillic 字元集 cp1252 - Windows 專用西歐字元集 KOI8-R - 俄語 BIG5 - 繁體中文,主要在台灣使用 GB2312 - 簡體中文,國家標準字元集 BIG5-HKSCS - 帶香港擴展的Big5 Shift_JIS - 日語 EUC-JP - 日語 MacRoman - Mac 作業系統使用的字元集 註:在PHP 5.4 之前的版本,無法被辨識的字元集將被忽略並由ISO-8859-1 取代。自PHP 5.4 起,無法被辨識的字元集將被忽略並由UTF-8 取代。 |
double_encode | 可選。一個規定了是否編碼已存在的HTML 實體的布林值。 TRUE - 預設。將對每個實體進行轉換。 FALSE - 不會對已存在的HTML 實體進行編碼。 |
傳回值: | 傳回已轉換的字串。如果string包含無效的編碼,則傳回一個空的字串,除非設定了ENT_IGNORE 或ENT_SUBSTITUTE 標誌。 |
---|---|
PHP 版本: | 4+ |
更新日誌: | 在PHP 5 中, character-set參數的預設值改為UTF-8。在PHP 5.4 中,新增了:ENT_SUBSTITUTE、ENT_DISALLOWED、ENT_HTML401、ENT_HTML5、ENT_XML1 和ENT_XHTML。在PHP 5.3 中,新增了ENT_IGNORE。在PHP 5.2.3 中,新增了double_encode參數。在PHP 4.1 中,新增了character-set參數。 |
把一些預先定義的字元轉換為HTML 實體:
<?php $str = " Jane & 'Tarzan' " ; echo htmlspecialchars ( $str , ENT_COMPAT ) ; //默認,僅編碼雙引號echo " <br> " ; echo htmlspecialchars ( $str , ENT_QUOTES ) ; //編碼雙引號與單引號echo " <br> " ; echo htmlspecialchars ( $str , ENT_NOQUOTES ) ; //不編碼任何引號?>上面程式碼的HTML 輸出如下(查看原始碼):
< ! DOCTYPE html > < html > <身體> Jane & 'Tarzan' < br > Jane & 'Tarzan' < br > Jane & 'Tarzan' </身體> </ html >上面程式碼的瀏覽器輸出如下:
Jane & 'Tarzan'Jane & 'Tarzan'Jane & 'Tarzan'把雙引號轉換為HTML 實體:
<?php $str = ' I love "PHP". ' ; echo htmlspecialchars ( $str , ENT_QUOTES ) ; //編碼雙引號與單引號?> ;上面程式碼的HTML 輸出如下(查看原始碼):
< ! DOCTYPE html > < html > <身體> I love " PHP " . </身體> </ html >上面程式碼的瀏覽器輸出如下:
I love "PHP".