fork download
  1. <?php
  2.  
  3.  
  4. $regexp = '/^((\\+\\s*7)|(\s*[8]\\s*\\-*))(\\)*\\(*\\-*\\s*[0-9]\\)*\\(*\\-*\\s*){10}$/';
  5.  
  6. $patterns = array();
  7. $patterns[0] = '/(\\-|\\s|\\(|\\)|)/';
  8. $patterns[1] = '/(\\+\\s*7)/';
  9.  
  10. $replacements = array();
  11. $replacements[0] = '';
  12. $replacements[1] = '8';
  13.  
  14. $numbers = [
  15. '84951234567',
  16. '+74951234567',
  17. '8-495-1-234-567',
  18. ' 8 (8122) 56-56-56',
  19. '8-911-1234567',
  20. '8 (911) 12 345 67',
  21. '8-911 12 345 67',
  22. '8 (911) - 123 - 45 - 67',
  23. '+ 7 999 123 4567',
  24. '8 ( 999 ) 1234567',
  25. '8 999 123 4567',
  26. '02',
  27. '84951234567 позвать люсю',
  28. '849512345',
  29. '849512345678',
  30. '8 (409) 123-123-123',
  31. '7900123467',
  32. '5005005001',
  33. '8888-8888-88',
  34. '84951a234567',
  35. '8495123456a',
  36. '+1 234 5678901', /* неверный код страны */
  37. '+8 234 5678901', /* либо 8 либо +7 */
  38. '7 234 5678901' /* нет + */
  39. ];
  40.  
  41. foreach ($numbers as $number) {
  42. if (preg_match($regexp, $number)) {
  43. echo "Номер приведен в корректный вид - ";
  44. echo preg_replace($patterns, $replacements, $number);
  45. echo " | Старый вид - {$number}\n";
  46. } else {
  47. echo "Номер вверден не верно - {$number}\n";
  48. }
  49. }
Success #stdin #stdout 0s 82944KB
stdin
Standard input is empty
stdout
Номер приведен в корректный вид - 84951234567 | Старый вид - 84951234567
Номер приведен в корректный вид - 84951234567 | Старый вид - +74951234567
Номер приведен в корректный вид - 84951234567 | Старый вид - 8-495-1-234-567
Номер приведен в корректный вид - 88122565656 | Старый вид -  8 (8122) 56-56-56
Номер приведен в корректный вид - 89111234567 | Старый вид - 8-911-1234567
Номер приведен в корректный вид - 89111234567 | Старый вид - 8 (911) 12 345 67
Номер приведен в корректный вид - 89111234567 | Старый вид - 8-911 12 345 67
Номер приведен в корректный вид - 89111234567 | Старый вид - 8 (911) - 123 - 45 - 67
Номер приведен в корректный вид - 89991234567 | Старый вид - + 7 999 123 4567
Номер приведен в корректный вид - 89991234567 | Старый вид - 8 ( 999 ) 1234567
Номер приведен в корректный вид - 89991234567 | Старый вид - 8 999 123 4567
Номер вверден не верно - 02
Номер вверден не верно - 84951234567 позвать люсю
Номер вверден не верно - 849512345
Номер вверден не верно - 849512345678
Номер вверден не верно - 8 (409) 123-123-123
Номер вверден не верно - 7900123467
Номер вверден не верно - 5005005001
Номер вверден не верно - 8888-8888-88
Номер вверден не верно - 84951a234567
Номер вверден не верно - 8495123456a
Номер вверден не верно - +1 234 5678901
Номер вверден не верно - +8 234 5678901
Номер вверден не верно - 7 234 5678901