Home > Backend Development > PHP Tutorial > 判断内容里有没有汉语言,然后要返回中文字符

判断内容里有没有汉语言,然后要返回中文字符

WBOY
Release: 2016-06-13 11:11:17
Original
964 people have browsed it

判断内容里有没有中文,然后要返回中文字符
首先,我用preg_match_all('/[\x80-\xff]./', $s,$arr);检测是否有中文字符,然后打印出$arr,查看中文字符有哪些,再对应修改,但是打印$arr都是乱码,用了几种GB2312转UTF-8的方法都不行。
各位帮忙提供一些方法。


------解决方案--------------------
1、utf-8 是这样编码的:
U+007F  0xxxxxxx
U+07FF  110xxxxx 10xxxxxx
U+FFFF  1110xxxx 10xxxxxx 10xxxxxx
U+1FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U+3FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U+7FFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

2、由此可知中文的正则表达式规则串为
/^(?:[\x00-\x7f]
------解决方案--------------------
[\xc0-\xff][\x80-\xbf]+)+$/

3、手册中附录了这样的函数
function is_utf8($str) {
    $c=0; $b=0;
    $bits=0;
    $len=strlen($str);
    for($i=0; $i        $c=ord($str[$i]);
        if($c > 128){
            if(($c >= 254)) return false;
            elseif($c >= 252) $bits=6;
            elseif($c >= 248) $bits=5;
            elseif($c >= 240) $bits=4;
            elseif($c >= 224) $bits=3;
            elseif($c >= 192) $bits=2;
            else return false;
            if(($i+$bits) > $len) return false;
            while($bits > 1){
                $i++;
                $b=ord($str[$i]);
                if($b ------解决方案--------------------
 $b > 191) return false;
                $bits--;
            }
        }
    }
    return true;
}

4、从 php5.3 起, mb_string 扩展提供了 mb_check_encoding 函数
if(mb_check_encoding($s, 'utf-8')) echo 'yes';
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template