Để thực hiện cập nhật số điện thoại trên các hệ thống tôi phát triển theo lịch chuyển đổi đầu số tôi có phát triển thư viện hàm bằng ngôn ngữ php để thực hiện việc chuyển đổi này. Sau đây tôi xin được chia sẻ với các bạn. Đoạn code php bên dưới thực hiện chuyển đổi tất cả đầu số điện thoại cố định và di động hiện có tại Việt Nam.
1. Code
class Phonenumber { //private $phonetype='CELL'; //CELL, HOME private $arr_Prefix=array('CELL'=>array( '016966'=>'03966', '0169'=>'039', '0168'=>'038', '0167'=>'037', '0166'=>'036', '0165'=>'035', '0164'=>'034', '0163'=>'033', '0162'=>'032', '0120'=>'070', '0121'=>'079', '0122'=>'077', '0126'=>'076', '0128'=>'078', '0123'=>'083', '0124'=>'084', '0125'=>'085', '0127'=>'081', '0129'=>'082', '01992'=>'059', '01993'=>'059', '01998'=>'059', '01999'=>'059', '0186'=>'056', '0188'=>'058' ), 'HOME'=>array( '076'=>'0296', '064'=>'0254', '0281'=>'0209', '0240'=>'0204', '0781'=>'0291', '0241'=>'0222', '075'=>'0275', '056'=>'0256', '0650'=>'0274', '0651'=>'0271', '062'=>'0252', '0780'=>'0290', '0710'=>'0292', '026'=>'0206', '0511'=>'0236', '0500'=>'0262', '0501'=>'0261', '0230'=>'0215', '061'=>'0251', '067'=>'0277', '059'=>'0269', '0351'=>'0226', '04'=>'024', '039'=>'0239', '0320'=>'0220', '031'=>'0225', '0711'=>'0293', '08'=>'028', '0321'=>'0221', '058'=>'0258', '077'=>'0297', '060'=>'0260', '0231'=>'0213', '063'=>'0263', '025'=>'0205', '020'=>'0214', '072'=>'0272', '0350'=>'0228', '038'=>'0238', '030'=>'0229', '068'=>'0259', '057'=>'0257', '052'=>'0232', '0510'=>'0235', '055'=>'0255', '033'=>'0203', '053'=>'0233', '079'=>'0299', '022'=>'0212', '066'=>'0276', '036'=>'0227', '0280'=>'0208', '037'=>'0237', '054'=>'0234', '073'=>'0273', '074'=>'0294', '027'=>'0207', '070'=>'0270', '029'=>'0216' ) ); function convert($phonenumber) { if(!empty($phonenumber)) { //1. Xóa ký tự trắng $phonenumber=str_replace(' ','',$phonenumber); //2. Xóa các dấu chấm phân cách $phonenumber=str_replace('.','',$phonenumber); //3. Xóa các dấu gạch nối phân cách $phonenumber=str_replace('-','',$phonenumber); //4. Xóa dấu mở ngoặc đơn $phonenumber=str_replace('(','',$phonenumber); //5. Xóa dấu đóng ngoặc đơn $phonenumber=str_replace(')','',$phonenumber); //6. Xóa dấu + $phonenumber=str_replace('+','',$phonenumber); //7. Chuyển 84 đầu thành 0 if(substr($phonenumber,0,2)=='84') { $phonenumber='0'.substr($phonenumber,2,strlen($phonenumber)-2); } $dathaythe=false; foreach($this->arr_Prefix['HOME'] as $key=>$value) { //$prefixlen=strlen($key); if(strpos($phonenumber,$key)===0) { $prefix=$key; $prefixlen=strlen($key); $phone=substr($phonenumber,$prefixlen,strlen($phonenumber)-$prefixlen); $prefix=str_replace($key,$value,$prefix); $phonenumber=$prefix.$phone; //$phonenumber=str_replace($key,$value,$phonenumber); $dathaythe=true; break; } } if($dathaythe==false) { foreach($this->arr_Prefix['CELL'] as $key=>$value) { //$prefixlen=strlen($key); if(strpos($phonenumber,$key)===0) { $prefix=$key; $prefixlen=strlen($key); $phone=substr($phonenumber,$prefixlen,strlen($phonenumber)-$prefixlen); $prefix=str_replace($key,$value,$prefix); $phonenumber=$prefix.$phone; //$phonenumber=str_replace($key,$value,$phonenumber); $dathaythe=true; break; } } } return $phonenumber; } else { return false; } } }
2. Test
Sau đây là đoạn code test hàm chuyển đổi trên:
$converter=new Phonenumber(); $number='01673532789'; echo $number.'=>'; $number=$converter->convert($number); echo $number.'</br>';
3. Demo
4. Link API: http://api.nosomovo.xyz/convert/vnphonenumber/01676699666
Hy vọng hữu ích với các bạn!
Nosomovo
Thử với sdt 01699201699 để biết lỗi nhé! Chúc bạn thành công!
Cảm ơn bạn đã góp ý nhé. Hãy cho chúng tôi xin thêm nhiều ý kiến của bạn hơn nữa!
Đã fix xong bạn nhé!