php 判断字符串编码是utf-8 或gb2312实例
php判断字符串编码是utf-8或gb2312
第一种方法:
functionis_gb2312($str) { for($i=0;$i<strlen($str);$i++){ $v=ord($str[$i]); if($v>127){ if(($v>=228)&&($v<=233)) { if(($i+2)>=(strlen($str)-1))returntrue;//notenoughcharacters $v1=ord($str[$i+1]); $v2=ord($str[$i+2]); if(($v1>=128)&&($v1<=191)&&($v2>=128)&&($v2<=191))//utf编码 returnfalse; else returntrue; } } } returntrue; }
第二种方法:
/** *判断字符串是utf-8还是gb2312 *@paramunknown$str *@paramstring$default *@returnstring */ publicstaticfunctionutf8_gb2312($str,$default='gb2312') { $str=preg_replace("/[\x01-\x7F]+/","",$str); if(empty($str))return$default; $preg=array( "gb2312"=>"/^([\xA1-\xF7][\xA0-\xFE])+$/",//正则判断是否是gb2312 "utf-8"=>"/^[\x{4E00}-\x{9FA5}]+$/u",//正则判断是否是汉字(utf8编码的条件了),这个范围实际上已经包含了繁体中文字了 ); if($default=='gb2312'){ $option='utf-8'; }else{ $option='gb2312'; } if(!preg_match($preg[$default],$str)){ return$option; } $str=@iconv($default,$option,$str); //不能转成$option,说明原来的不是$default if(empty($str)){ return$option; } return$default; }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!