RE: [PHP] validate international phone numbers
| From: | Graham Cossey | Date: | Tue, 02 Nov 2004 11:54:05 +0000 |
| Subject: | RE: [PHP] validate international phone numbers | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-200912@lists.php.net to get a copy of this message | ||
> -----Original Message-----
> From: Merlin [mailto:news.groups@web.de]
> Sent: 02 November 2004 10:49
> To: php-general@lists.php.net
> Subject: [PHP] validate international phone numbers
>
>
> Hi,
>
> I am trying to validate international phone numbers before adding
> into a db.
> After a bit of research I came up with this regex:
>
> return (ereg('^[0-9]{1,3}\.[0-9]{1,6}\.[0-9]{1,8}$', $phone));
> However, this tightens the numbers to something like this: 409.711.933838
>
> Thats a problem, since some countries have complete other formats
> and some
> peopole place a + in front and a : instead of . or even just the number.
>
> Can anybody recommend a good regex to validate this? I am not to good at
> creating regex :-(
>
> Thanx for any help,
>
> Merlin
I know this is not exactly what you were asking, but, some time ago I did
some phone number validation/formatting but not in PHP.
IIRC I had a list of countries each of which had the relevant international
dialling code recorded.
The user of a form would select their country and enter a telephone number.
The international dialling code would be added if not present or validated
if '+' was present. Any leading 0 (after an int. code) would be removed.
Beyond that I think all you can do is validate that a certain number of
digits must have been entered as different people/countries use different
formatting chars: space , . - : etc etc
Another approach would be to request each component separately: int.code,
area code, local number.
This of course was all done within a function/class not a single statement.
HTH
Graham