I think the route I would approach is to strip out any non numeric characters and examine what you have left. After all, spacing and or dashes, parenthesis, dots and whatnot are merely for formatting. If this is all coming from a form, have a separate field for optional extensions.
Example (without extensions):
$phoneNumber = '(480) 555-2231';
$sanitizePhoneNumber = preg_replace('#[^0-9]#', '', $phoneNumber);
// from here, check how many digits you have and go from there...
Point being, let people format the phone number the way they want, and simply examine the numbers left over, and decide what to do from there.
@,
Your pattern could theoretically match something like:
(-555 5556 x67864657436584365786345637485674365784545242424241457890
Note that even with that issue aside, your pattern could be better setup. You don't need to escape (, - or ) inside a character class [if there is more than a dash inside a character class, the dash can be listed as the very first or very last character without escaping and will be considered a literal, not a range.. if there is only a dash in a character class, this is pointless and might as well be listed outside of it], nor do you need to encase \s if it is by itself in a character class, as that is already a short hand character class for any whitespace character.
Making assumptions like area code being surrounded by ( and ), a space or dash after the first 3 main digits, and let's also assume an extension with a 3 to 5 number limit (starting with an x as you have done), one possible way the pattern could be written:
$regex = '#^(?:\([0-9]{3}\)\s?)?[0-9]{3}[\s-][0-9]{4}(?:\s?x\s?[0-9]{3,5})?$#'
But again, this is based on rigid assumptions (which incidently assumes no need for any capturing), which is not as robust a solution as simply looking at the remaining numbers, and if the length is reflective of a correct format, go from there. This way, you cater to those who are serious and enter a phone number to their formatting preferences without punishing them for not formatting to your specifications.