php提取字符串中的手机号码或固话

php提取字符串中的手机号码或固话

2022-04-09 05:50 作者:爱聚二郎 围观:105 次

php提取字符串中的手机号码或固话

一、php提取字符串中的手机号码或固话XDX华亦诗商贸产品相册

/*通用方法*/XDX华亦诗商贸产品相册

function findNum($str='')XDX华亦诗商贸产品相册

{        XDX华亦诗商贸产品相册

$str=trim($str);       XDX华亦诗商贸产品相册

 if(empty($str))XDX华亦诗商贸产品相册

{XDX华亦诗商贸产品相册

return '';XDX华亦诗商贸产品相册

}        XDX华亦诗商贸产品相册

$reg= "/[^0-9+]*(?P(\+86[0-9]{11})|([0-9]{11})|([0-9]{3,4}-[0-9]{7,10}))[^0-9+]*/";XDX华亦诗商贸产品相册

preg_match_all($reg,$str,$result); if(is_array($result)&&!empty($result)&&!empty($result[1])&&!empty($result[1][0]))XDX华亦诗商贸产品相册

{XDX华亦诗商贸产品相册

return $result[1][0];XDX华亦诗商贸产品相册

}XDX华亦诗商贸产品相册

return '';XDX华亦诗商贸产品相册

}XDX华亦诗商贸产品相册

二、另外附上PHP提取字符串中的数字的方法我觉得两个方法应该都是常用所以放在一起推荐XDX华亦诗商贸产品相册

使用in_array方法:XDX华亦诗商贸产品相册

function findNum($str=''){XDX华亦诗商贸产品相册

$str=trim($str);XDX华亦诗商贸产品相册

if(empty($str)){return '';}XDX华亦诗商贸产品相册

$temp=array('1','2','3','4','5','6','7','8','9','0');XDX华亦诗商贸产品相册

$result='';XDX华亦诗商贸产品相册

for($i=0;$iXDX华亦诗商贸产品相册

if(in_array($str[$i],$temp)){XDX华亦诗商贸产品相册

$result.=$str[$i];XDX华亦诗商贸产品相册

}XDX华亦诗商贸产品相册

}XDX华亦诗商贸产品相册

return $result;XDX华亦诗商贸产品相册

}XDX华亦诗商贸产品相册

使用is_numeric函数:XDX华亦诗商贸产品相册

function findNum($str=''){XDX华亦诗商贸产品相册

$str=trim($str);XDX华亦诗商贸产品相册

if(empty($str)){return '';}XDX华亦诗商贸产品相册

$result='';XDX华亦诗商贸产品相册

for($i=0;$iXDX华亦诗商贸产品相册

if(is_numeric($str[$i])){XDX华亦诗商贸产品相册

$result.=$str[$i];XDX华亦诗商贸产品相册

}XDX华亦诗商贸产品相册

}XDX华亦诗商贸产品相册

return $result;XDX华亦诗商贸产品相册

}XDX华亦诗商贸产品相册

三、也是跟提取字符串有关系的方法  就是把字符串中的号码进行替换可以是完全的替换可拨打的链接也可以替换为*号XDX华亦诗商贸产品相册

function hidtel($phone)XDX华亦诗商贸产品相册

{XDX华亦诗商贸产品相册

$IsWhat = preg_match('/(0[0-9]{2,3}[\-]?[2-9][0-9]{6,7}[\-]?[0-9]?)/i',$phone); //固定电话XDX华亦诗商贸产品相册

if($IsWhat == 1)XDX华亦诗商贸产品相册

{XDX华亦诗商贸产品相册

return preg_replace('/(0[0-9]{2,3}[\-]?[2-9])[0-9]{3,4}([0-9]{3}[\-]?[0-9]?)/i','$1****$2',$phone);XDX华亦诗商贸产品相册

}elseXDX华亦诗商贸产品相册

{XDX华亦诗商贸产品相册

return  preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$1****$2',$phone);XDX华亦诗商贸产品相册

}XDX华亦诗商贸产品相册

}XDX华亦诗商贸产品相册

提示:想换成可点击的拨打电话链接可以这样,对比下着两端代码 其实区别就在于$0-$1-$2 而已,$0是获取匹配到的完整号码,$1是获取前三位,$2是获取后4位XDX华亦诗商贸产品相册

function hidtel($phone)XDX华亦诗商贸产品相册

{    XDX华亦诗商贸产品相册

$IsWhat = preg_match('/(0[0-9]{2,3}[\-]?[2-9][0-9]{6,7}[\-]?[0-9]?)/i',$phone); //固定电话  XDX华亦诗商贸产品相册

  if($IsWhat == 1)XDX华亦诗商贸产品相册

{        XDX华亦诗商贸产品相册

return preg_replace('/(0[0-9]{2,3}[\-]?[2-9])[0-9]{3,4}([0-9]{3}[\-]?[0-9]?)/i','$0',$phone);   XDX华亦诗商贸产品相册

 }elseXDX华亦诗商贸产品相册

{        XDX华亦诗商贸产品相册

return  preg_replace('/(1[358]{1}[0-9])[0-9]{4}([0-9]{4})/i','$0',$phone);    XDX华亦诗商贸产品相册

}XDX华亦诗商贸产品相册

}XDX华亦诗商贸产品相册

PHP获取字符中的手机号

场景:客服在线聊天过程中,经常需要获取客户的手机号作为唯一标记,比如在微信小程序聊天过程中,客服需要得到客户的手机号,从而获取客户整体画像(比如从淘宝或者京东买了什么);现在的操作流程是,客服复制出来,或者手动添加到后台系统里面,非常麻烦;因此希望能自动从聊天记录里面分析出手机号,然后记录到客户信息里面;XDX华亦诗商贸产品相册

目标:从字符串中获取手机号XDX华亦诗商贸产品相册

思路:遍历字符串,获取符合规则要求的手机号码,然后将手机号码存储到后台;XDX华亦诗商贸产品相册

实现:XDX华亦诗商贸产品相册

/** * 从字符串中获取手机号码(匹配第一个) * @param string $need_check_string 待处理的字符串 * @return string 手机号 */public function find_phone_from_string(string $need_check_string): string{    //检查是不是为空    if (empty($need_check_string)) {        return '';    }    //去掉前后空格    $need_check_string = trim($need_check_string);    $check_string = '';    //获取字符的总长度    $check_string_len = mb_strlen($need_check_string);    //遍历每个字符    for ($check_string_index = 0; $check_string_index < $check_string_len; $check_string_index++) {        $current_char = mb_substr($need_check_string, $check_string_index, 1);        //不是数字,检查是不是手机        if (!is_numeric($current_char)) {            //是手机,返回手机,不再继续检查了            if (!empty($check_string) && $this->is_phone_string($check_string)) {                return $check_string;            }            //不是手机,需要把当前待检查字符清空            $check_string = '';            //这里不再继续往下循环            continue;        }        //如果是数字,拼接到$check_string中        $check_string .= $current_char;        //去掉086或者86的前缀        if ($check_string == '86' || $check_string == '086') {            $check_string = '';            //这里不再继续往下循环            continue;        }        //是手机,返回手机,不再继续检查了        if ($this->is_phone_string($check_string)) {            //如果手机号后面还是数字,不合法            if ($check_string_index + 1 < $check_string_len && is_numeric(mb_substr($need_check_string, $check_string_index + 1, 1))) {                $check_string = '';                //这里不再继续往下循环                continue;            }            return $check_string;        }    }    return '';}/** * 检查一个字符串是不是手机号 * @param string $need_check_string 待处理的手机号 * @return bool 是否是手机号 */public function is_phone_string(string $need_check_string): bool{    if (empty($need_check_string)) {        return false;    }    //去掉空格,检查是否是 11位数字(手机都是11位数字)    $need_check_string = trim($need_check_string);    if (!is_numeric($need_check_string) || strlen($need_check_string) != 11) {        return false;    }    return preg_match("/^1[23456789]\d{9}$/", $need_check_string);}

测试:XDX华亦诗商贸产品相册

function test(){    header("Content-type:text/html;charset=utf-8");    echo auto_reply_service::get_instance()->find_phone_from_string('我是二郎15088725396');    echo "<br/>";    echo auto_reply_service::get_instance()->find_phone_from_string('15088725396');    echo "<br/>";    echo auto_reply_service::get_instance()->find_phone_from_string('我是86-15088725396二郎');    echo "<br/>";    echo auto_reply_service::get_instance()->find_phone_from_string('我是08615088725396二郎');    echo "<br/>";    echo auto_reply_service::get_instance()->find_phone_from_string('我是086150887253961二郎');    echo "<br/>";}

输出:XDX华亦诗商贸产品相册

1:150887253962:150887253963:150887253964:150887253965:

华亦诗商贸产品相册 » php提取字符串中的手机号码或固话

喜欢 ()or分享
留言与评论(共有 0 条评论)
   
验证码:
[!--temp.wxfx--]