fork(2) download
  1. <?php
  2.  
  3. // Правильные:
  4. $numbers = [
  5. '84951234567', '+74951234567', '8-495-1-234-567',
  6. ' 8 (8122) 56-56-56', '8-911-1234567', '8 (911) 12 345 67',
  7. '8-911 12 345 67', '8 (911) - 123 - 45 - 67', '+ 7 999 123 4567',
  8. '8 ( 999 ) 1234567', '8 999 123 4567'
  9. ];
  10.  
  11. $regexp = '/^[\\s]*([+][\\s]*7|8)(([(]*[)]*[-]*[\\s]*)*([0-9])){10}[\\s]*$/ui';
  12.  
  13. foreach ($numbers as $number) {
  14. if (preg_match($regexp, $number)) {
  15. preg_match_all('/([+]?[\s]*[0-9])/ui',$number,$temp);
  16. $temp2 = implode($temp[0]);
  17. $temp2 = str_replace(' ', '', $temp2);
  18. $temp3 = preg_replace('/([+]7|8)([0-9]{10})/ui', '8$2',$temp2);
  19. echo "Номер $number верный. Исправленный номер - $temp3\n";
  20. } else {
  21. echo "Номер $number не верный\n";
  22. }
  23. }
Success #stdin #stdout 0.02s 52432KB
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