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

資訊專欄INFORMATION COLUMN

PHP的htmlspecialchars() 和htmlspecialchars_decode方法詳

劉東 / 2320人閱讀

摘要:示例你是誰啊,大幾都老梁做做沒結果你是誰啊,大幾都老梁做做沒對反斜杠進行轉換結果你是誰啊,大幾都老梁對斜杠進行過濾入庫時進行檢測攻擊。打印你是誰啊,大幾都老梁做做沒編碼雙引號和單引號。

htmlspecialchars() 函數把預定義的字符轉換為 HTML 實體。

預定義的字符是:

& (和號)成為 &

" (雙引號)成為 "

" (單引號)成為 "

< (小于)成為 <

> (大于)成為 >

注意:這個函數不能對斜杠/,反斜杠做處理。

示例:

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

$content = htmlspecialchars($content);  

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

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

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

在 HTML 中,某些字符是預留的。
在 HTML 中不能使用小于號(<)和大于號(>),這是因為瀏覽器會誤認為它們是標簽。
如果希望正確地顯示預留字符,我們必須在 HTML 源代碼中使用字符實體(character entities)。
字符實體類似這樣:
&entity_name;或者entity_number;

如需顯示小于號,我們必須這樣寫:< 或 <

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

二、PHP htmlspecialchars() 函數

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

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

ENT_COMPAT - 默認。僅編碼雙引號。

ENT_QUOTES - 編碼雙引號和單引號。

ENT_NOQUOTES - 不編碼任何引號。

character-set:

UTF-8 - 默認。ASCII 兼容多字節的 8 位 Unicode
POCO 的后端為GBK,所以用這個函數的時候,盡量使用編碼,而默認的編碼為UTF-8

GB2312 - 簡體中文,國家標準字符集

double_encode 可選。布爾值,規定了是否編碼已存在的 HTML 實體。

TRUE - 默認。將對每個實體進行轉換。

FALSE - 不會對已存在的 HTML 實體進行編碼。

示例:

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

// 如果使用默認的參數,則不會對單引號進行轉換。
$new_str = htmlspecialchars($content );

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

// ENT_QUOTES 編碼雙引號和單引號。

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

htmlspecialchars_decode(string,flags)

string 必需。規定要解碼的字符串。

flags 可選。規定如何處理引號以及使用哪種文檔類型。

可用的引號類型:

ENT_COMPAT - 默認。僅解碼雙引號。

ENT_QUOTES - 解碼雙引號和單引號。

ENT_NOQUOTES - 不解碼任何引號。

測試:

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

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

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

// 解碼雙引號和單引號。
$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
四、函數封裝

將上邊的字符串預定義轉為實體封裝為一個方法,以后可以直接調用:

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

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

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

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

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