成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

PHP的htmlspecialchars() 和htmlspecialchars_decode方法詳

劉東 / 2316人閱讀

摘要:示例你是誰啊,大幾都老梁做做沒結(jié)果你是誰啊,大幾都老梁做做沒對(duì)反斜杠進(jìn)行轉(zhuǎn)換結(jié)果你是誰啊,大幾都老梁對(duì)斜杠進(jìn)行過濾入庫時(shí)進(jìn)行檢測(cè)攻擊。打印你是誰啊,大幾都老梁做做沒編碼雙引號(hào)和單引號(hào)。

htmlspecialchars() 函數(shù)把預(yù)定義的字符轉(zhuǎn)換為 HTML 實(shí)體。

預(yù)定義的字符是:

& (和號(hào))成為 &

" (雙引號(hào))成為 "

" (單引號(hào))成為 "

< (小于)成為 <

> (大于)成為 >

注意:這個(gè)函數(shù)不能對(duì)斜杠/,反斜杠做處理。

示例:

$content  = "你是/誰啊,大幾都"老梁"做做&>women";

$content = htmlspecialchars($content);  

// 結(jié)果:
你是/誰啊,大幾都"老梁"做做&>women

// 對(duì)反斜杠進(jìn)行轉(zhuǎn)換
 $content = preg_replace("http://", "\", $content);
//  結(jié)果:你是/誰啊,大幾\都"老梁

// 對(duì)斜杠進(jìn)行過濾,入庫時(shí)進(jìn)行XSS檢測(cè)攻擊。
$content = preg_replace("http:///", "/", $content);
一、HTML 實(shí)體

在 HTML 中,某些字符是預(yù)留的。
在 HTML 中不能使用小于號(hào)(<)和大于號(hào)(>),這是因?yàn)闉g覽器會(huì)誤認(rèn)為它們是標(biāo)簽。
如果希望正確地顯示預(yù)留字符,我們必須在 HTML 源代碼中使用字符實(shí)體(character entities)。
字符實(shí)體類似這樣:
&entity_name;或者entity_number;

如需顯示小于號(hào),我們必須這樣寫:< 或 <

提示:使用實(shí)體名而不是數(shù)字的好處是,名稱易于記憶。不過壞處是,瀏覽器也許并不支持所有實(shí)體名稱(對(duì)實(shí)體數(shù)字的支持卻很好)。

二、PHP htmlspecialchars() 函數(shù)

htmlspecialchars(string,flags,character-set,double_encode)

flags 可選。規(guī)定如何處理引號(hào)、無效的編碼以及使用哪種文檔類型。
可用的引號(hào)類型:

ENT_COMPAT - 默認(rèn)。僅編碼雙引號(hào)。

ENT_QUOTES - 編碼雙引號(hào)和單引號(hào)。

ENT_NOQUOTES - 不編碼任何引號(hào)。

character-set:

UTF-8 - 默認(rèn)。ASCII 兼容多字節(jié)的 8 位 Unicode
POCO 的后端為GBK,所以用這個(gè)函數(shù)的時(shí)候,盡量使用編碼,而默認(rèn)的編碼為UTF-8

GB2312 - 簡(jiǎn)體中文,國家標(biāo)準(zhǔn)字符集

double_encode 可選。布爾值,規(guī)定了是否編碼已存在的 HTML 實(shí)體。

TRUE - 默認(rèn)。將對(duì)每個(gè)實(shí)體進(jìn)行轉(zhuǎn)換。

FALSE - 不會(huì)對(duì)已存在的 HTML 實(shí)體進(jìn)行編碼。

示例:

$content = "women"s life" . "你是/誰啊,大幾都"老梁"做做&>women";

// 如果使用默認(rèn)的參數(shù),則不會(huì)對(duì)單引號(hào)進(jìn)行轉(zhuǎn)換。
$new_str = htmlspecialchars($content );

打?。?
women"s life你是/誰啊,大幾都"老梁"做做&>women

// ENT_QUOTES 編碼雙引號(hào)和單引號(hào)。

$new_str = htmlspecialchars($content, ENT_QUOTES);
women's life你是/誰啊,大幾都"老梁"做做&>women
三、htmlspecialchars_decode解碼

htmlspecialchars_decode(string,flags)

string 必需。規(guī)定要解碼的字符串。

flags 可選。規(guī)定如何處理引號(hào)以及使用哪種文檔類型。

可用的引號(hào)類型:

ENT_COMPAT - 默認(rèn)。僅解碼雙引號(hào)。

ENT_QUOTES - 解碼雙引號(hào)和單引號(hào)。

ENT_NOQUOTES - 不解碼任何引號(hào)。

測(cè)試:

解碼:
$str = ‘women's life你是/誰啊,大幾都"老梁"做做&>women’;

// 只解碼雙引號(hào)
$new_str = htmlspecialchars_decode($new_str);
dump($new_str);

打?。?women's life你是/誰啊,大幾都"老梁"做"做&>women

// 解碼雙引號(hào)和單引號(hào)。
$content = "women"s life" . "你是/誰啊,大幾都"老梁"做"做&>women";

$new_str = htmlspecialchars($content, ENT_QUOTES, gb2312, true);

$new_str = htmlspecialchars_decode($new_str, ENT_QUOTES);
print_r($new_str);

打印:
women"s life你是/誰啊,大幾都"老梁"做"做&>women
四、函數(shù)封裝

將上邊的字符串預(yù)定義轉(zhuǎn)為實(shí)體封裝為一個(gè)方法,以后可以直接調(diào)用:

$str =  "women"s life" . "你是/誰啊,大幾都"老梁"做做&>women";

// 1.將常用的預(yù)定義字符轉(zhuǎn)為實(shí)體
$new_str = htmlspecialchars($str, ENT_QUOTES, gb2312, true);

// 2.替換反斜杠
 $new_str = preg_replace("http://", "\", $new_str);

// 3.替換斜杠
$content = preg_replace("http:///", "/", $content);

// 打印結(jié)果:
women's life你是/誰啊,大幾\都"老梁"做做&>women                
閱讀需要支付1元查看
<