• Source
    1. <?php
    2.  
    3. // your code goes here
    4. error_reporting(-1);
    5.  
    6. $regexp = "/(\+7|8|\+ 7)+[0-9\-\(\)\s]{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. $incorrectNumbers = [
    16. '02', '84951234567 позвать люсю', '849512345', '849512345678',
    17. '8 (409) 123-123-123', '7900123467', '5005005001', '8888-8888-88',
    18. '84951a234567', '8495123456a',
    19. '+1 234 5678901', /* неверный код страны */
    20. '+8 234 5678901', /* либо 8 либо +7 */
    21. '7 234 5678901' /* нет + */
    22. ];
    23.  
    24. //var_dump($words);
    25. foreach ($incorrectNumbers as $key => $value) {
    26. //echo "\n".$value;
    27.  
    28. //$value = preg_replace('%\\D%', '', $value);
    29. //echo "\n".$value;
    30. if (preg_match($regexp, $value, $match)) {
    31. echo "\n найдено вхождение: ".$value;
    32. //var_dump($match);
    33. }
    34. }