fork download
  1. <?php
  2.  
  3. function normalizePhone($number)
  4. {
  5. $regexp = '/^(?:\+\s*7|8)(?:[-() ]*\d){10}[-() ]*$/u';
  6.  
  7. if (!preg_match($regexp, $number)) {
  8. return null;
  9. }
  10. $digits = preg_replace('/[^0-9]/', '', $number);
  11.  
  12. if ($digits[0] === '7') {
  13. $digits = '8' . mb_substr($digits, 1);
  14. }
  15. return $digits;
  16. }
  17.  
  18. $numbers = ['8-911-404-44-11', '+7(812)6786767', '+7 999 123 4567', '02'];
  19.  
  20. foreach ($numbers as $number) {
  21. $result = normalizePhone($number);
  22. echo "'{$number}' => " . ($result === null ? "неверный номер" : $result) . "\n";
  23. }
Success #stdin #stdout 0.03s 25648KB
stdin
Standard input is empty
stdout
'8-911-404-44-11' => 89114044411
'+7(812)6786767' => 88126786767
'+7 999 123 4567' => 89991234567
'02' => неверный номер