把html標簽轉換為實體
/*
可以處理數組中的代碼,他們的作用是可以把一個數組或字符串中的字符轉化為html實體,可以防止頁面的跨站問題,
那么我們看到他的轉換就是將'&','"','<','>'轉化為'&', '"', '<', '>'。
但是這里面會有一些問題,如'& #x5FD7;'這樣的16進制的html字符,為了防止這樣的字符被錯誤轉譯,所以又使用了正則進行匹配,
把這樣的字符又轉換回來。
*/
1 function dhtmlspecialchars($string, $flags = null) { 2 if(is_array($string)) { 3 foreach($string as $key => $val) { 4 $string[$key] = dhtmlspecialchars($val, $flags); 5 } 6 } else { 7 if($flags === null) { 8 $string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string); 9 if(strpos($string, '&#') !== false) { 10 //過濾掉類似志的16進制的html字符 11 $string = preg_replace('/&((#(\d{3,5}|x[a-fA-F0-9]{4}));)/', '&\\1', $string); 12 } 13 } else { 14 if(PHP_VERSION < '5.4.0') { 15 $string = htmlspecialchars($string, $flags); 16 } else { 17 if(strtolower(CHARSET) == 'utf-8') { 18 $charset = 'UTF-8'; 19 } else { 20 $charset = 'ISO-8859-1'; 21 } 22 $string = htmlspecialchars($string, $flags, $charset); 23 } 24 } 25 } 26 return $string; 27 }
