PHP5.4¼°PHP5.5¹ØÓÚhtmlspecialcharsÊä³öΪ¿ÕµÄÎÊÌâ
·¢²¼Ê±¼ä£º06/20 À´Ô´£ºÎ´Öª ä¯ÀÀ£º
¹Ø¼ü´Ê£º
µ¥Î»¸ü»»ÐµķþÎñÆ÷£¬È«²¿²ÉÓõÄwindows server 2008 r2 64λϵͳ£¬ÔÚ¼èÄѵÄÅäÖû·¾³Ö®ºó£¬È´·¢ÏÖIIS7.5Ó¦Óóز»¶Ï±¨´í£¬ºóÀ´¸ü»»ÁËPHP5.5µÄ64λ°æ±¾£¬¾Í½â¾öÁËÎÊÌ⣬¿´À´ÔÚ64λwin2008Ï£¬»¹ÊÇ64λPHP²ÅÊÇ×î¼Ñ´îÅä°¡¡£
µ«ÊÇ£¬¿à±ÆµÄÊÂÇé×ÜÊÇÄÇô¶à£¬±¾ÈËÖÆ×÷µÄÍøÕ¾ÊÇdedeϵͳµÄ£¬Ôڵǽºǫ́ʱȴÓöµ½ÁËÂé·³£¬µÇ½ºóÌáʾHTTp500´íÎó£¬Ò»·¬ËÑË÷½â¾öÖ®ºó£¬ÓÖÓöµ½·¢±íÐÂÎÄÕÂÌáʾ±êÌâ²»ÄÜΪ¿ÕµÄÎÊÌ⣬Ã÷Ã÷ÓбêÌ⣬ȴ²»ÐУ¿ÕâÊÇÒòΪÔÚPHP5.4¼°ÒÔºóµÄ°æ±¾ÖÐhtmlspecialcharsĬÈÏΪUTF8£¬ÄãÊÇÖÐÎÄ£¬µ±È»¼ì²â²»µ½ÄãÁË¡£Õæ¾À½á°¡£¡Ö»ºÃ°´ÕÕ½â¾öDEDE±êÌâΪ¿ÕµÄ°ì·¨Ìæ»»Ò»Á˸ö±é£¬·¢ÏÖDEDEÓÐÊ®¼¸´¦Óõ½ÁËhtmlspecialcharsÊôÐÔ£¬»¹ºÃÀ²¡£
ÁíÍâתÀ´Ò»Î»¼¼Êõ´óţдµÄÎÄÕ£¬Ï£Íû¶ÔÄúÓаïÖú¡£ÔÎÄÈçÏ£º
´Ó¾É°æÉý¼¶µ½php5.4£¬¿ÖÅÂ×îÂé·³µÄ¾ÍÊÇhtmlspecialcharsÕâ¸öÎÊÌâÁË£¡µ±È»£¬htmlentitiesÒ²»áÊÜÓ°Ï죬²»¹ý£¬¶ÔÓÚÖÐÎÄÕ¾À´ËµÒ»°ãÓÃhtmlspecialchars±È½Ï³£¼û£¬htmlentities·Ç³£ÉÙÓõ½¡£
¿ÉÄÜÀÏÍâÈÏΪÍøÒ³ÆÕ±éÓ¦¸ÃÊÇutf-8±àÂëµÄ£¬ÓÚÊÇ¿àÁËÄÇЩÓÃGB2312£¬GBK±àÂëµÄÖÐÎÄÕ¾......£¡
¾ßÌå±íÏÖ£º
$str = "9enjoy.comµÄphp°æ±¾ÊÇ5.2.10";
echo htmlspecialchars($str);
gbk×Ö·û¼¯ÏÂÊä³öΪ¿Õ...utf-8Ï£¬Êä³öÕý³£¡£
ΪʲôÄØ£¬ÔÒòÔÚÓÚ5.4.0¶ÔÕâ¸öº¯ÊýµÄ±ä»¯£º
5.4.0 The default value for the encoding parameter was changed to UTF-8.
ÔÀ´ÊÇʲôÄØ£¿
string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = 'UTF-8' [, bool $double_encode = true ]]] )
Defines encoding used in conversion. If omitted, the default value for this argument is ISO-8859-1 in versions of PHP prior to 5.4.0, and UTF-8 from PHP 5.4.0 onwards.
ÔÀ´ÊÇISO-8859-1£¬5.4ºóĬÈϱä³Éutf-8£¡È»ºóÖÐÎÄʹÓÃÕâ¸öº¯Êý¾ÍÊä³öΪ¿Õ°×ÁË¡£
¹úÄÚÒ»¶Ñ¿ªÔ´³ÌÐòÔÚ5.4϶¼»áÓÐÕâÑùµÄÎÊÌ⣬DISCUZ¹Ù·½Ò²½¨ÒéÓû§²»ÒªÉý¼¶µ½5.4¡£
½â¾ö·½°¸£º
1.¿à±ÆµÄÐÞ¸ÄËùÓÐÓõ½htmlspecialcharsµØ·½µÄ³ÌÐò
1.1 ÆäµÚ¶þ¸ö$flags²ÎÊý£¬Ä¬ÈÏÊÇENT_COMPAT£¬Òò´Ë¸Ä³É
htmlspecialchars($str,ENT_COMPAT,'GB2312');
Ϊʲô²»ÊÇGBK£¿ÒòΪûÓÐGBKÕâ¸ö²ÎÊý£¬Èç¹ûÇ¿ÐÐʹÓÃGBK£¬Ôò±¨´í¸øÄã¿´£º
Warning: htmlspecialchars(): charset `gbk' not supported, assuming utf-8
ΪÁËÄÜʹÓÃGBK£¬Ôò¸Ä³É£º
htmlspecialchars($str,ENT_COMPAT,'ISO-8859-1');
1.2.Ò»ÑùÊǸijÌÐò£¬µ«¿ÉÒÔÊ¡ÂÔÒ»¸ö²ÎÊý¡£
¿ÉÒÔÔÚÍøҳͷ²¿¼Ó
ini_set('default_charset','gbk');
È»ºó¸Ä³É
htmlspecialchars($str,ENT_COMPAT,'');
ÎĵµÖÐÓÐд£ºAn empty string activates detection from script encoding (Zend multibyte), default_charset and current locale (see nl_langinfo() and setlocale()), in this order. Not recommended.
´ó¸ÅÒâ˼¾ÍÊÇ£º´«Èë¿Õ×Ö·û´®ÔòʹÓÃdefault_charsetµÄ±àÂë
1.3.·â×°Ò»¸öº¯Êý°É...±¾À´htmlspecialcharsÕâ¸öµ¥´ÊÒ»Ö±²»ºÃ¼Ç¡£
function htmlout($str) {
return htmlspecialchars($str,ENT_COMPAT,'ISO-8859-1');
}
È»ºóÈ¥ÅúÁ¿Ìæ»»¡£
×îаæÖ¯ÃÎϵͳÒѾ½â¾öÁËÕâ¸öÎÊÌ⣬½«°æ±¾¸üÐÂΪ×îм´¿É½â¾ö¡£
¸ÐлÄúµÄÖ§³Ö£¬ÎÒ»á¼ÌÐøŬÁ¦µÄ!
ɨÂë´òÉÍ£¬Äã˵¶àÉپͶàÉÙ
´ò¿ªÖ§¸¶±¦É¨Ò»É¨£¬¼´¿É½øÐÐɨÂë´òÉÍŶ
°Ù·Ö°ÙÔ´ÂëÍø ½¨Òé´òÉÍ1¡«10Ôª£¬ÍÁºÀËæÒ⣬¸ÐлÄúµÄÔĶÁ£¡