Advertisement
Guest User

Untitled

a guest
Jul 29th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.80 KB | None | 0 0
  1. // 使い方
  2. echo format_phone_number('0120828828'); // 0120-828-828
  3.  
  4. function format_phone_number($input, $strict = false) {
  5. $groups = array(
  6. 5 =>
  7. array (
  8. '01564' => 1,
  9. '01558' => 1,
  10. '01586' => 1,
  11. '01587' => 1,
  12. '01634' => 1,
  13. '01632' => 1,
  14. '01547' => 1,
  15. '05769' => 1,
  16. '04992' => 1,
  17. '04994' => 1,
  18. '01456' => 1,
  19. '01457' => 1,
  20. '01466' => 1,
  21. '01635' => 1,
  22. '09496' => 1,
  23. '08477' => 1,
  24. '08512' => 1,
  25. '08396' => 1,
  26. '08388' => 1,
  27. '08387' => 1,
  28. '08514' => 1,
  29. '07468' => 1,
  30. '01655' => 1,
  31. '01648' => 1,
  32. '01656' => 1,
  33. '01658' => 1,
  34. '05979' => 1,
  35. '04996' => 1,
  36. '01654' => 1,
  37. '01372' => 1,
  38. '01374' => 1,
  39. '09969' => 1,
  40. '09802' => 1,
  41. '09912' => 1,
  42. '09913' => 1,
  43. '01398' => 1,
  44. '01377' => 1,
  45. '01267' => 1,
  46. '04998' => 1,
  47. '01397' => 1,
  48. '01392' => 1,
  49. ),
  50. 4 =>
  51. array (
  52. '0768' => 2,
  53. '0770' => 2,
  54. '0772' => 2,
  55. '0774' => 2,
  56. '0773' => 2,
  57. '0767' => 2,
  58. '0771' => 2,
  59. '0765' => 2,
  60. '0748' => 2,
  61. '0747' => 2,
  62. '0746' => 2,
  63. '0826' => 2,
  64. '0749' => 2,
  65. '0776' => 2,
  66. '0763' => 2,
  67. '0761' => 2,
  68. '0766' => 2,
  69. '0778' => 2,
  70. '0824' => 2,
  71. '0797' => 2,
  72. '0796' => 2,
  73. '0555' => 2,
  74. '0823' => 2,
  75. '0798' => 2,
  76. '0554' => 2,
  77. '0820' => 2,
  78. '0795' => 2,
  79. '0556' => 2,
  80. '0791' => 2,
  81. '0790' => 2,
  82. '0779' => 2,
  83. '0558' => 2,
  84. '0745' => 2,
  85. '0794' => 2,
  86. '0557' => 2,
  87. '0799' => 2,
  88. '0738' => 2,
  89. '0567' => 2,
  90. '0568' => 2,
  91. '0585' => 2,
  92. '0586' => 2,
  93. '0566' => 2,
  94. '0564' => 2,
  95. '0565' => 2,
  96. '0587' => 2,
  97. '0584' => 2,
  98. '0581' => 2,
  99. '0572' => 2,
  100. '0574' => 2,
  101. '0573' => 2,
  102. '0575' => 2,
  103. '0576' => 2,
  104. '0578' => 2,
  105. '0577' => 2,
  106. '0569' => 2,
  107. '0594' => 2,
  108. '0827' => 2,
  109. '0736' => 2,
  110. '0735' => 2,
  111. '0725' => 2,
  112. '0737' => 2,
  113. '0739' => 2,
  114. '0743' => 2,
  115. '0742' => 2,
  116. '0740' => 2,
  117. '0721' => 2,
  118. '0599' => 2,
  119. '0561' => 2,
  120. '0562' => 2,
  121. '0563' => 2,
  122. '0595' => 2,
  123. '0596' => 2,
  124. '0598' => 2,
  125. '0597' => 2,
  126. '0744' => 2,
  127. '0852' => 2,
  128. '0956' => 2,
  129. '0955' => 2,
  130. '0954' => 2,
  131. '0952' => 2,
  132. '0957' => 2,
  133. '0959' => 2,
  134. '0966' => 2,
  135. '0965' => 2,
  136. '0964' => 2,
  137. '0950' => 2,
  138. '0949' => 2,
  139. '0942' => 2,
  140. '0940' => 2,
  141. '0930' => 2,
  142. '0943' => 2,
  143. '0944' => 2,
  144. '0948' => 2,
  145. '0947' => 2,
  146. '0946' => 2,
  147. '0967' => 2,
  148. '0968' => 2,
  149. '0987' => 2,
  150. '0986' => 2,
  151. '0985' => 2,
  152. '0984' => 2,
  153. '0993' => 2,
  154. '0994' => 2,
  155. '0997' => 2,
  156. '0996' => 2,
  157. '0995' => 2,
  158. '0983' => 2,
  159. '0982' => 2,
  160. '0973' => 2,
  161. '0972' => 2,
  162. '0969' => 2,
  163. '0974' => 2,
  164. '0977' => 2,
  165. '0980' => 2,
  166. '0979' => 2,
  167. '0978' => 2,
  168. '0920' => 2,
  169. '0898' => 2,
  170. '0855' => 2,
  171. '0854' => 2,
  172. '0853' => 2,
  173. '0553' => 2,
  174. '0856' => 2,
  175. '0857' => 2,
  176. '0863' => 2,
  177. '0859' => 2,
  178. '0858' => 2,
  179. '0848' => 2,
  180. '0847' => 2,
  181. '0835' => 2,
  182. '0834' => 2,
  183. '0833' => 2,
  184. '0836' => 2,
  185. '0837' => 2,
  186. '0846' => 2,
  187. '0845' => 2,
  188. '0838' => 2,
  189. '0865' => 2,
  190. '0866' => 2,
  191. '0892' => 2,
  192. '0889' => 2,
  193. '0887' => 2,
  194. '0893' => 2,
  195. '0894' => 2,
  196. '0897' => 2,
  197. '0896' => 2,
  198. '0895' => 2,
  199. '0885' => 2,
  200. '0884' => 2,
  201. '0869' => 2,
  202. '0868' => 2,
  203. '0867' => 2,
  204. '0875' => 2,
  205. '0877' => 2,
  206. '0883' => 2,
  207. '0880' => 2,
  208. '0879' => 2,
  209. '0829' => 2,
  210. '0550' => 2,
  211. '0228' => 2,
  212. '0226' => 2,
  213. '0225' => 2,
  214. '0224' => 2,
  215. '0229' => 2,
  216. '0233' => 2,
  217. '0237' => 2,
  218. '0235' => 2,
  219. '0234' => 2,
  220. '0223' => 2,
  221. '0220' => 2,
  222. '0192' => 2,
  223. '0191' => 2,
  224. '0187' => 2,
  225. '0193' => 2,
  226. '0194' => 2,
  227. '0198' => 2,
  228. '0197' => 2,
  229. '0195' => 2,
  230. '0238' => 2,
  231. '0240' => 2,
  232. '0260' => 2,
  233. '0259' => 2,
  234. '0258' => 2,
  235. '0257' => 2,
  236. '0261' => 2,
  237. '0263' => 2,
  238. '0266' => 2,
  239. '0265' => 2,
  240. '0264' => 2,
  241. '0256' => 2,
  242. '0255' => 2,
  243. '0243' => 2,
  244. '0242' => 2,
  245. '0241' => 2,
  246. '0244' => 2,
  247. '0246' => 2,
  248. '0254' => 2,
  249. '0248' => 2,
  250. '0247' => 2,
  251. '0186' => 2,
  252. '0185' => 2,
  253. '0144' => 2,
  254. '0143' => 2,
  255. '0142' => 2,
  256. '0139' => 2,
  257. '0145' => 2,
  258. '0146' => 2,
  259. '0154' => 2,
  260. '0153' => 2,
  261. '0152' => 2,
  262. '0138' => 2,
  263. '0137' => 2,
  264. '0125' => 2,
  265. '0124' => 2,
  266. '0123' => 2,
  267. '0126' => 2,
  268. '0133' => 2,
  269. '0136' => 2,
  270. '0135' => 2,
  271. '0134' => 2,
  272. '0155' => 2,
  273. '0156' => 2,
  274. '0176' => 2,
  275. '0175' => 2,
  276. '0174' => 2,
  277. '0178' => 2,
  278. '0179' => 2,
  279. '0184' => 2,
  280. '0183' => 2,
  281. '0182' => 2,
  282. '0173' => 2,
  283. '0172' => 2,
  284. '0162' => 2,
  285. '0158' => 2,
  286. '0157' => 2,
  287. '0163' => 2,
  288. '0164' => 2,
  289. '0167' => 2,
  290. '0166' => 2,
  291. '0165' => 2,
  292. '0267' => 2,
  293. '0250' => 2,
  294. '0533' => 2,
  295. '0422' => 2,
  296. '0532' => 2,
  297. '0531' => 2,
  298. '0436' => 2,
  299. '0428' => 2,
  300. '0536' => 2,
  301. '0299' => 2,
  302. '0294' => 2,
  303. '0293' => 2,
  304. '0475' => 2,
  305. '0295' => 2,
  306. '0297' => 2,
  307. '0296' => 2,
  308. '0495' => 2,
  309. '0438' => 2,
  310. '0466' => 2,
  311. '0465' => 2,
  312. '0467' => 2,
  313. '0478' => 2,
  314. '0476' => 2,
  315. '0470' => 2,
  316. '0463' => 2,
  317. '0479' => 2,
  318. '0493' => 2,
  319. '0494' => 2,
  320. '0439' => 2,
  321. '0268' => 2,
  322. '0480' => 2,
  323. '0460' => 2,
  324. '0538' => 2,
  325. '0537' => 2,
  326. '0539' => 2,
  327. '0279' => 2,
  328. '0548' => 2,
  329. '0280' => 2,
  330. '0282' => 2,
  331. '0278' => 2,
  332. '0277' => 2,
  333. '0269' => 2,
  334. '0270' => 2,
  335. '0274' => 2,
  336. '0276' => 2,
  337. '0283' => 2,
  338. '0551' => 2,
  339. '0289' => 2,
  340. '0287' => 2,
  341. '0547' => 2,
  342. '0288' => 2,
  343. '0544' => 2,
  344. '0545' => 2,
  345. '0284' => 2,
  346. '0291' => 2,
  347. '0285' => 2,
  348. '0120' => 3,
  349. '0570' => 3,
  350. '0800' => 3,
  351. '0990' => 3,
  352. ),
  353. 3 =>
  354. array (
  355. '099' => 3,
  356. '054' => 3,
  357. '058' => 3,
  358. '098' => 3,
  359. '095' => 3,
  360. '097' => 3,
  361. '052' => 3,
  362. '053' => 3,
  363. '011' => 3,
  364. '096' => 3,
  365. '049' => 3,
  366. '015' => 3,
  367. '048' => 3,
  368. '072' => 3,
  369. '084' => 3,
  370. '028' => 3,
  371. '024' => 3,
  372. '076' => 3,
  373. '023' => 3,
  374. '047' => 3,
  375. '029' => 3,
  376. '075' => 3,
  377. '025' => 3,
  378. '055' => 3,
  379. '026' => 3,
  380. '079' => 3,
  381. '082' => 3,
  382. '027' => 3,
  383. '078' => 3,
  384. '077' => 3,
  385. '083' => 3,
  386. '022' => 3,
  387. '086' => 3,
  388. '089' => 3,
  389. '045' => 3,
  390. '044' => 3,
  391. '092' => 3,
  392. '046' => 3,
  393. '017' => 3,
  394. '093' => 3,
  395. '059' => 3,
  396. '073' => 3,
  397. '019' => 3,
  398. '087' => 3,
  399. '042' => 3,
  400. '018' => 3,
  401. '043' => 3,
  402. '088' => 3,
  403. '050' => 4,
  404. ),
  405. 2 =>
  406. array (
  407. '04' => 4,
  408. '03' => 4,
  409. '06' => 4,
  410. ),
  411. );
  412. $groups[3] +=
  413. $strict ?
  414. array(
  415. '020' => 3,
  416. '070' => 3,
  417. '080' => 3,
  418. '090' => 3,
  419. ) :
  420. array(
  421. '020' => 4,
  422. '070' => 4,
  423. '080' => 4,
  424. '090' => 4,
  425. )
  426. ;
  427. $number = preg_replace('/[^\d]++/', '', $input);
  428. foreach ($groups as $len => $group) {
  429. $area = substr($number, 0, $len);
  430. if (isset($group[$area])) {
  431. $formatted = implode('-', array(
  432. $area,
  433. substr($number, $len, $group[$area]),
  434. substr($number, $len + $group[$area])
  435. ));
  436. return strrchr($formatted, '-') !== '-' ? $formatted : $input;
  437. }
  438. }
  439. $pattern = '/\A(00(?:[013-8]|2\d|91[02-9])\d)(\d++)\z/';
  440. if (preg_match($pattern, $number, $matches)) {
  441. return $matches[1] . '-' . $matches[2];
  442. }
  443. return $input;
  444. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement