php截取一段字符串中第一个出现的数字或字母或冒号前面的中文汉字的语句怎么写?

一段字符串里中文和数字、字母和中文冒号混排,想截取第一个数字或字母或中文冒号前的中文汉字,如$str="登山服+数字或字母";或者$str="登山服:5620A";php... 一段字符串里中文和数字、字母和中文冒号混排,想截取第一个数字或字母或中文冒号前的中文汉字,如$str="登山服+数字或字母"; 或者 $str="登山服:5620A"; php语句应该怎么写?
帮帮忙呀
展开
 我来答
564643122abc
2013-11-05 · TA获得超过462个赞
知道小有建树答主
回答量:699
采纳率:0%
帮助的人:401万
展开全部
/**
* 截取函数,中文一个,英文两个算一个
*/
function mbsubstr($str, $start=0, $length, $suffix=true, $charset="utf-8") {
    $re['utf-8']   = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xff][\x80-\xbf]{3}/";
    $re['gb2312'] = "/[\x01-\x7f]|[\xb0-\xf7][\xa0-\xfe]/";
    $re['gbk']    = "/[\x01-\x7f]|[\x81-\xfe][\x40-\xfe]/";
    $re['big5']   = "/[\x01-\x7f]|[\x81-\xfe]([\x40-\x7e]|\xa1-\xfe])/";
    preg_match_all($re[$charset], $str, $match);
    
    $strArr = $match[0];
    $str = array_values(tempStrArr($strArr));
    $strArrCount = count($str);
    if($strArrCount == $length+1){
        $length += 1;
    }
    
    $slice = implode('',array_slice($str,$start,$length));
    if($strArrCount > $length){
        return $suffix ? $slice.'...' : $slice;
    }else{
        return $slice;
    }
}
function tempStrArr($strArr){
    $e = range('a','z');
    $i = count($strArr);
    foreach($strArr as $k=>$v){
        if(in_array(strtolower($v), $e)){
            if(in_array(strtolower($strArr[$k+1]), $e)){
                $strArr[$k] = $v.$strArr[$k+1];
                unset($strArr[$k+1]);
 陆腔               break;
   宽昌         }
  慎悉扒      }elseif($v > 0 && $v < 10 && $strArr[$k+1] > 0 && $strArr[$k+1] < 10){
            $strArr[$k] = $v.$strArr[$k+1];
            unset($strArr[$k+1]);
            break;
        }
        $i--;
    }
    if($i > 0){
        $strArr = tempStrArr($strArr);
    }
    
    return $strArr;
}

截取字符串, 中英文都可以

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0f37e23c0
2013-11-06 · TA获得超过1543个赞
知道大有可为答主
回答量:1070
采纳率:50%
帮助的人:1294万
展开全部
帮你测试过,符合要求
$str="登山服:5620A登山服"; 
$search1 = implode("-",range("a","z"));
$search2 = implode("-"慎正团,range("A","Z"));
$search3 = implode("-",range(0,9));
$search4 = implode("-",array(":"));
$search = $search1."宽橘-" .$search2."-" .$search3."-" .$search4;
$oldarr = explode("-",$search);
$newarr = array();
foreach($oldarr 清吵as $value)
$newarr [] = "{mysplit}";

$str = str_replace($oldarr, $newarr, $str);
$arr = explode("{mysplit}",$str);
echo $arr[0];
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式