加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

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

发布时间:2020-05-26 12:05:15 所属栏目:PHP 来源:互联网
导读:php中我们经常要对URL中的字符串进行解码,在解码之前,我们先要判断字符串编码的类型。本文章向大家介绍php如何判断字符串编码,是utf-8还是gb2312或GBK,需要的码农可以参考一下。

第一种方法:

function is_gb2312($str)

{

for($i=0; $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;

}

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读