把html標簽轉換為實體 dhtmlspecialchars


把html標簽轉換為實體
/*
可以處理數組中的代碼,他們的作用是可以把一個數組或字符串中的字符轉化為html實體,可以防止頁面的跨站問題,
那么我們看到他的轉換就是將'&','"','<','>'轉化為'&amp;', '&quot;', '&lt;', '&gt;'。
但是這里面會有一些問題,如'& #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('&amp;', '&quot;', '&lt;', '&gt;'), $string);
 9             if(strpos($string, '&amp;#') !== false) {
10                 //過濾掉類似&#x5FD7的16進制的html字符
11                 $string = preg_replace('/&amp;((#(\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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM