in reply to Beast of the Number: Parsing the Feral Phone

Just another 0.02:

In Denmark there is no areacode. Phone numbers are just 8-digit numbers with a possible extension (no standard for that, format etc depends on the local switchboard). The number is traditionally formatted as dd dd dd dd, but even that has begun to vary: some people use 2 groups of 3 digits and a 2 digit group, others 2 groups of 4 digits!

Earlier you could figure out which phonecentral the number was attached to, but following (EU instigated?) rulechanges you can take your number with you when you move from one part of the country to another. Thus there is no areacode, or all of Denmark (including cellular phones!) is in the same area.

Things do vary.

Replies are listed 'Best First'.
Re: Re: Beast of the Number: Parsing the Feral Phone
by mojotoad (Monsignor) on Jan 16, 2003 at 08:43 UTC
    Interesting fatctiod about Denmark having no area codes.

    This is why I do not bother attempting to interpret the core number once I have dealt with IDD codes, country codes, extensions, and various representations of multiple numbers. Figuring out an area code is beyond the scope of this set of tools -- it does, however, make a huge step in providing a base phone number suitable for interpretation by a module tailored to a particular country or region.

    I admit that my *display* functionality is US-centric. It chunks the core number width 4 digits on the suffix, preceded by groups of three (or less if the first digits). So in your example, dd dd dd dd would come out looking like d ddd dddd.

    That's just cosmetic, however. The internal representation makes no distinction for area codes of any sort. The module can be provided with new chunked_number() and as_string() methods suitable for any locale. If I ever put it on CPAN I would attempt to structure it so that subclasses could easily provide for internationalization (perhaps based on country code, but with a default format for the local region).

    (it's worth repeating that the actual display of these numbers was more of an afterthought -- the main thrust is the normalization and parsing of unverified and unruly international phone number strings)