首頁 > 後端開發 > php教程 > 判断内容里有没有汉语言,然后要返回中文字符

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

WBOY
發布: 2016-06-13 11:11:17
原創
965 人瀏覽過

判断内容里有没有中文,然后要返回中文字符
首先,我用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';
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板