Это может сработать. Он должен учитывать появление пробелов в любом месте номера телефона.
preg_match('|^\s*\(?\s*\d{1,4}\s*\)?\s*[\d\s]{5,10}\s*$|', $phone);
Люди иногда разделяют телефонный номер на две части пробелами.
Обновление: Если вы хотите проверить номер телефона и пробелы одновременно, вы можете сделать это следующим образом:
if (preg_match('|^\s*(\(?\s*\d{1,4}\s*\)?\s*[\d\s]{5,10})\s*$|', $phone, $m))
{
echo $m[1];
}