fork(1) download
  1. <?php
  2.  
  3. $right = 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 1111');
  4.  
  5. $wrong = 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
  10. '7 234 5678901' // нет +
  11. );
  12.  
  13.  
  14. $rnumber = preg_replace('/[\s()-]/', '', $right);
  15.  
  16. $rnumber2 = preg_replace('[\+7]', '8', $rnumber);
  17.  
  18. $wnumber = preg_replace('/[\s()-]/', '', $wrong);
  19.  
  20. $wnumber2 = preg_replace('[\+7]', '8', $wnumber);
  21.  
  22. $regexp = '/^(\+7|8)([-]?[(]?[ ]?[\d][)]?[ ]?[-]?){10}$/i';
  23.  
  24. for ($i = 0; $i <= (count($rnumber) - 1); $i++) {
  25.  
  26. if (preg_match_all($regexp, $rnumber2[$i])) {
  27. // Так можно сделать чтобы и правильные показывало echo "Номер {$rnumber2[$i]} правильный\n";
  28. } else {
  29. echo "Номер {$rnumber2[$i]} не правильный\n";
  30. }
  31. }
  32.  
  33. for ($i = 0; $i <= (count($wnumber2) - 1); $i++) {
  34.  
  35. if (preg_match_all($regexp, $wnumber2[$i])) {
  36. echo "Номер {$wnumber2[$i]} правильный\n";
  37. } else {
  38. echo "Номер {$wnumber2[$i]} не правильный\n";
  39. }
  40. }
  41.  
Success #stdin #stdout 0.02s 24400KB
stdin
Standard input is empty
stdout
Номер 02 не правильный
Номер 84951234567позватьлюсю не правильный
Номер 849512345 не правильный
Номер 849512345678 не правильный
Номер 8409123123123 не правильный
Номер 7900123467 не правильный
Номер 5005005001 не правильный
Номер 8888888888 не правильный
Номер 84951a234567 не правильный
Номер 8495123456a не правильный
Номер +12345678901 не правильный
Номер +82345678901 не правильный
Номер 72345678901 не правильный