PHP htmlspecialchars 函數
定義和用法
addslashes() 函數在指定的預定義字元前添加反斜線。
些字元有特殊意義的HTML,並應在HTML實體的代表,如果他們要保持它們的含義。這個函數返回一個與這些轉換的一些字串的;的譯本,是那些最有用的日常網路編程。如果您需要的所有HTML字元實體進行翻譯,使用ヶ輛()代替。
此功能有助於防止使用者提供從含有諸如在留言板或來賓簿應用HTML標記,文本。
在翻譯過程為:
'&'(符號)變成'&'
'“'(雙引號)變成'”'時ENT_NOQUOTES未設定。
'''(單引號)成為'''只有當ENT_QUOTES設定。
'<“(小於)變成”<'
'>“(大於)變成'>”
字串
該字串被轉換。
quote_style
可選的第二個參數,quote_style,告訴函數如何處理單,雙引號。預設的模式,ENT_COMPAT,是向後相容的模式,只有99.64雙引號字元和葉單引號翻譯。如果ENT_QUOTES設定單一和雙引號翻譯,如果ENT_NOQUOTES既不是單一的,也不設定雙引號的翻譯。
字元集
定義中使用的字元集的轉換。預設字元集是ISO - 8859 - 1。
對於這個功能的目的,標準字元集- 8859 - 1問題,ISO - 8859 - 15,UTF - 8的,cp866,cp1251,cp1252,並KOI8 - R的有效等價,如用htmlspecialchars影響的字元()佔用相同這些職位的所有字元集。
以下字元集的支援在PHP 4.3.0及更高版本。
支援的字元集編碼別名描述
標準- 8859 - 1 ISO8859 - 1西歐,拉美- 1
標準- 8859 - 15 ISO8859 - 15西歐,拉美9。增加了歐元符號,法國和芬蘭在拉丁美洲的信失蹤1字元(ISO - 8859 - 1)。
UTF - 8的ASCII相容多位元組8位Unicode。
cp866 ibm866,866 DOS的具體西裡爾字元集。這字元集支援4.3.2。
cp1251的Windows - 1251,共贏1251,1251 Windows的具體西裡爾字元集。這字元集支援4.3.2。
cp1252的Windows - 1252,1252的Windows西歐特定字元集。
KOI8 - R的koi8茹,koi8r俄羅斯。這字元集支援4.3.2。
繁體版950繁體中文,主要用於台灣。
簡體版936簡體中文,國家標準字元集。
繁體版,繁體中文字元集的擴充與香港,繁體中文。
Shift_JIS 8859,932日語
EUC - JP的EUCJP日本
註:任何其他字元集無法識別和ISO - 8859 - 1將用來代替。
double_encode
當double_encode關閉PHP將不存在的HTML實體編碼開啟,預設是把一切。
<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // <a href='test'>Test</a>
參考執行個體
<?php
function get_page($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_USERAGENT, 'some bot');
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_REFERER, '-');
curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
...
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_NOBODY, 0);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
$html = curl_exec($curl);
curl_close($curl);
return $html;
}
$text = get_page($url);
$new = htmlspecialchars($text, ENT_QUOTES); // here is the magic :)
echo '<pre>' .$new. '</pre>';
?>