php教程

超轻量级php框架startmvc

php 判断字符串编码是utf-8 或gb2312实例

更新时间:2020-03-13 20:58:29 作者:startmvc
php判断字符串编码是utf-8或gb2312第一种方法:functionis_gb2312($str){for($i=0;$i<strlen($str);$i++){$v=

php 判断字符串编码是utf-8 或gb2312

第一种方法:


function is_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)) return true; // not enough characters
 $v1 = ord( $str[$i+1] );
 $v2 = ord( $str[$i+2] );
 if( ($v1 >= 128) && ($v1 <=191) && ($v2 >=128) && ($v2 <= 191) ) // utf编码
 return false;
 else
 return true;
 }
 }
 }
 return true;
}
 

第二种方法:


/**
 * 判断字符串是utf-8 还是gb2312
 * @param unknown $str
 * @param string $default
 * @return string
 */
public static function utf8_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;
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

php 判断字符串编码 php 判断编码方式 php 判断字符串编码是utf-8 或者gb2312的方法