开发者

Format telephone number

开发者 https://www.devze.com 2023-02-05 13:32 出处:网络
I have to format a telephon开发者_如何学Ce number list, and I\'d wish to extract and separate the prefix from the number for better viewing.

I have to format a telephon开发者_如何学Ce number list, and I'd wish to extract and separate the prefix from the number for better viewing.

I have a list of all possible prefixes, but there is no regular pattern.

I mean, I could have these numbers:

00 - 12345 (short prefix)

0000 - 12345 (long prefix)

How can I manage that? Numbers are plain, without any special char (ie without / \ - . , ecc ecc).

Prefixes are like that:

030

031

0321

0322

...

...

Most of the time I have the town of the customer (it's not required) so, usually i can get the prefix from there, but that's not a sure thing, since town and telephone couldn't be linked.

== EDIT ==

Prefix list is 231 entries long. Maybe I'll add somthing more, so take 300 as safe value

Moreover, prefixes come from a single country only (Italy)

I have to save plain numbers without any separator so users can search for it. Infact if they put separators they will never able to find again that.

More info

Prefix ALWAYS starts with a leading 0, its lenght ranges from 2-4

But the more i study this thing, the more i think i can't work it out :(


Because of the extremely varied telephone number formats used around the world, it's probably going to be tough to correctly parse any phone number that is put into your system.

I'm not certain if it would make your ask any easier, but I had the idea that parsing from Right-to-Left might be easier for you, since it's the Prefix length that's unknown


What a pain. I would use a logic funnel to narrow possible choices and finally take a best guess.

First, test if the first few numbers can match anything on your prefix list. For some, hopefully only one prefix can possibly be correct.

Then, perhaps you could use the city to eliminate prefixes from entirely different countries.

Finally, you could default to the most popular format for prefixes.

Without any other information, you can't do better than a good guess unless you want to default to no format at all.


I'm really confused. What do you mean, "extract and separate"? My guess is these phone numbers are in a MySQL database, and you get to use PHP. Are you trying to get the prefix from the numbers, and then insert them into a different field in the same row? Are you pulling these numbers from the database, and you would just like to print the prefixes to the screen?

Regardless of what you're trying to do, and taking for granted that you're using PHP and regexs, isn't this essentially what you're looking for?:

$telephone_number = '333-12345';
$matched = array();
preg_match('~^(\d+)-~', $telephone_number, $matched);
$matched[1]  // Should be '333'


ok, I worked it out.
I saw that there aren't shor prefixes that share chars with longer one.
I mean:
02 -> there will never be a longer prefix as 021, 022 and so on

so things are pretty easy now:

I get first 4 numbers -> is that in my prefix table?
YES: stop here NO: get first 3

and so on..

thanks for your help

0

精彩评论

暂无评论...
验证码 换一张
取 消