国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

PHP的htmlspecialchars() 和htmlspecialchars_decode方法詳

劉東 / 2309人閱讀

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

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

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

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

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

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

< (小于)成為 <

> (大于)成為 >

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

示例:

$content  = "你是/誰(shuí)啊,大幾都"老梁"做做&>women沒(méi)";

$content = htmlspecialchars($content);  

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

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

// 對(duì)斜杠進(jìn)行過(guò)濾,入庫(kù)時(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í)體類(lèi)似這樣:
&entity_name;或者entity_number;

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

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

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

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

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

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)體中文,國(guó)家標(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" . "你是/誰(shuí)啊,大幾都"老梁"做做&>women沒(méi)";

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

打印: 
women"s life你是/誰(shuí)啊,大幾都"老梁"做做&>women沒(méi)

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

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

htmlspecialchars_decode(string,flags)

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

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

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

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

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

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

測(cè)試:

解碼:
$str = ‘women's life你是/誰(shuí)啊,大幾都"老梁"做做&>women沒(méi)’;

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

打印:
women's life你是/誰(shuí)啊,大幾都"老梁"做"做&>women沒(méi)

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

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

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

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

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

$str =  "women"s life" . "你是/誰(shuí)啊,大幾都"老梁"做做&>women沒(méi)";

// 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你是/誰(shuí)啊,大幾\都"老梁"做做&>women沒(méi)                
閱讀需要支付1元查看
<