fork(1) download
  1. <?php
  2. $regExp = "/^\\s*([+]\\s*7|8)(\W*[0-9]\W*){10}$/ui"; //регулярка для правильного номера (пока не нужна)
  3.  
  4. $deleteExp = "/\\W*/"; //регулярка для удаления лишних символов
  5.  
  6. $standartExp = "/((7)|(8))([0-9]{10})/ui"; // Устанавливает номерам единный стандарт
  7.  
  8. $correctNumbers = [
  9. '84951234567', '+74951234567', '8-495-1-234-567',
  10. ' 8 (8122) 56-56-56', '8-911-1234567', '8 (911) 12 345 67',
  11. '8-911 12 345 67', '8 (911) - 123 - 45 - 67', '+ 7 999 123 4567',
  12. '8 ( 999 ) 1234567', '8 999 123 4567'
  13. ];
  14. // Проверяем номер на правильность и заносим правильный номер в массив
  15. foreach($correctNumbers as $correctNumber){
  16. if(preg_match($regExp,$correctNumber)){
  17. $provedNumbers[] = $correctNumber;
  18. }
  19. }
  20.  
  21. // Убираем лишние символы и заносим исправленные номера в массив
  22. foreach($provedNumbers as $provedNumber){
  23. $cleanNumbers[] = preg_replace($deleteExp,"", $provedNumber);
  24. }
  25.  
  26.  
  27. // Делаем единный стандарт
  28. foreach($cleanNumbers as $cleanNumber){
  29. $numbers[] = preg_replace($standartExp,"+7$4", $cleanNumber);
  30.  
  31. }
  32.  
  33. print_r($numbers); //Ура!!!!
Success #stdin #stdout 0.01s 83200KB
stdin
Standard input is empty
stdout
Array
(
    [0] => +74951234567
    [1] => +74951234567
    [2] => +74951234567
    [3] => +78122565656
    [4] => +79111234567
    [5] => +79111234567
    [6] => +79111234567
    [7] => +79111234567
    [8] => +79991234567
    [9] => +79991234567
    [10] => +79991234567
)