<?php
 
// Правильные: 
$numbers = [ 
  '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'
];
 
$regexp = '/^[\\s]*([+][\\s]*7|8)(([(]*[)]*[-]*[\\s]*)*([0-9])){10}[\\s]*$/ui';
 
foreach ($numbers as $number) {
	if (preg_match($regexp, $number)) {
		preg_match_all('/([+]?[\s]*[0-9])/ui',$number,$temp);
		$temp2 = implode($temp[0]);
		$temp2 = str_replace(' ', '', $temp2);
		$temp3 = preg_replace('/([+]7|8)([0-9]{10})/ui', '8$2',$temp2);
		echo "Номер $number верный. Исправленный номер - $temp3\n";
	} else {
		echo "Номер $number не верный\n";
	}
}