fork(1) download
  1. <?php
  2. header("Content-Type: text/plain; charset=utf-8");
  3. ?>
  4. <?php
  5. /*
  6. На вход скрипта дан введенный пользователем номер телефона в виде 8-911-404-44-11 или +7(812)6786767 (в начале 8 или +7, потом идут 10 цифр и, возможно, какие-то символы). То есть, как и в прошлой задаче, человек вводит номер как хочет. Надо проверить номер на правильность и привести любой номер к единому формату 89114044411 (то есть, заменить +7 на 8 и выкинуть весь мусор вроде пробелов, скобок и минусов, кроме цифр)
  7.  
  8. Вот список номеров:
  9.  
  10. Правильные: 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');
  11.  
  12. Неправильные: array('02', '84951234567 позвать люсю', '849512345', '849512345678',
  13. '8 (409) 123-123-123', '7900123467', '5005005001', '8888-8888-88',
  14. '84951a234567', '8495123456a',
  15. '+1 234 5678901', // неверный код страны
  16. '+8 234 5678901', // либо 8 либо +7
  17. '7 234 5678901' // нет +
  18. );
  19. */
  20. $number = array('84951234567',
  21. '+74951234567',
  22. '8-495-1-234-567',
  23. '8 (8122) 56-56-56',
  24. '8-911-1234567',
  25. '8 (911) 12 345 67',
  26. '8-911 12 345 67',
  27. '8 (911) - 123 - 45 - 67',
  28. '+ 7 999 123 4567',
  29. '8 ( 999 ) 1234567',
  30. '8 999 123 4567');
  31. $number2 = array('02',
  32. '84951234567 позвать люсю',
  33. '849512345', '849512345678',
  34. '8 (409) 123-123-123',
  35. '7900123467',
  36. '5005005001',
  37. '8888-8888-88',
  38. '84951a234567',
  39. '8495123456a',
  40. '+1 234 5678901',
  41. '+8 234 5678901',
  42. '7 234 5678901');
  43.  
  44.  
  45. function getNumber($array)
  46. {
  47. foreach ($array as &$number)
  48. {
  49. $number = preg_replace('/[\s()-]/', '', $number);
  50. if (preg_match('/^(([+]7)|8)[0-9]{10}$/', $number))
  51. {
  52. $number = preg_replace('/^[+]7/', '8', $number);
  53. }
  54. else
  55. {
  56. $number = "Набранный номер $number не подходит";
  57. }
  58. }
  59. return $array;
  60. }
  61. print_r(getNumber($number));
  62. print_r(getNumber($number2));
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
 
Array
(
    [0] => 84951234567
    [1] => 84951234567
    [2] => 84951234567
    [3] => 88122565656
    [4] => 89111234567
    [5] => 89111234567
    [6] => 89111234567
    [7] => 89111234567
    [8] => 89991234567
    [9] => 89991234567
    [10] => 89991234567
)
Array
(
    [0] => Набранный номер 02 не подходит
    [1] => Набранный номер 84951234567позватьлюсю не подходит
    [2] => Набранный номер 849512345 не подходит
    [3] => Набранный номер 849512345678 не подходит
    [4] => Набранный номер 8409123123123 не подходит
    [5] => Набранный номер 7900123467 не подходит
    [6] => Набранный номер 5005005001 не подходит
    [7] => Набранный номер 8888888888 не подходит
    [8] => Набранный номер 84951a234567 не подходит
    [9] => Набранный номер 8495123456a не подходит
    [10] => Набранный номер +12345678901 не подходит
    [11] => Набранный номер +82345678901 не подходит
    [12] => Набранный номер 72345678901 не подходит
)