一个字符串 匹配中文和数字的案例
2016-08-05 16:40:31 小德 PHP 访问次数 776


一个输入字符串 有效输入为 一个中文串或者一个数字,部分顺序。 摘取并判断输入的字符串种类。


function parseSearch($str){
    $ill = preg_match("/[^\x{4e00}-\x{9fa5}\d].*/u", $str); //非法匹配
    if( $ill ) {
        return false;
    }
    preg_match_all('/\d+/s', $str, $nums); // 匹配数字
    preg_match_all("/[\x{4e00}-\x{9fa5}]+/u", $str, $chinese); //匹配中文
    $nums = $nums[0];
    $chinese = $chinese[0];
    if( count($nums) > 1 || count($chinese) > 1 ){
        return false;
    }
    // 纯数字 即没有中文
    if( empty($chinese) ){
        return ['type'=>1,'nums'=>$nums[0]];
    }elseif(  empty($nums) ){ // 纯中文 即没有数字
        return ['type'=>2,'chinese'=>$chinese[0]];
    }else{
        return ['type'=>3,'chinese'=>$chinese[0],'nums'=>$nums[0]];
    }
}