<?php

error_reporting(-1);

$regexpNumber = '/^ *((\\+ *7)|8)[ \\-\\(]*\d[ \\-\\(]*\d[ \\-\\(]*\d[ \\-\\)]*\d[ \\-\\)]*\d[ \\-\\)]*\d[ \\-\\)]*\d[ \\-\\)]*\d[ \\-\\)]*\d[ \\-\\)]*\d$/u';

$correctNumber = [
	'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'
	];
	
$incorrectNumber = [
	'02', '84951234567 позвать люсю', '849512345', '849512345678',
    '8 (409) 123-123-123', '7900123467', '5005005001', '8888-8888-88',
    '84951a234567', '8495123456a',
    '+1 234 5678901',
    '+8 234 5678901',
    '7 234 5678901'
	];
	
foreach($correctNumber as $number) {
	if(preg_match($regexpNumber, $number) > 0) {
		echo "Номер $number - корректный\n";
	} else {
		echo "Номер $number - некорректный\n";
	}
}
echo "\n";
foreach($incorrectNumber as $number) {
	if(preg_match($regexpNumber, $number) > 0) {
		echo "Номер $number - корректный\n";
	} else {
		echo "Номер $number - некорректный\n";
	}
}