这里有新鲜出炉的 PHP 设计模式,程序狗速度看过来!
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言。语法吸收了 C 语言、Java 和 Perl 的特点,入门门槛较低,易于学习,使用广泛,主要适用于 web 开发领域。PHP 的文件后缀名为 php。
这篇文章主要介绍了 php 判断字符串编码是 utf-8 或 gb2312 实例的相关资料, 需要的朋友可以参考下
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;
- }
来源: http://www.phperz.com/article/17/0803/341586.html