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