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

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

WBOY
Freigeben: 2016-06-13 12:56:22
Original
960 Leute haben es durchsucht

判断内容里有没有中文,然后要返回中文字符
首先,我用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';
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage