Để 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 |
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:
1 2 3 4 5 |
$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é!