This is a discussion on phone number formatting within the PHP Language forums, part of the PHP Programming Forums category; this is probably a stupid question so apologies in advance. I am trying to format a number to look like ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
Shay Hurley wrote:
> this is probably a stupid question so apologies in advance. > > I am trying to format a number to look like a phone number with "-"'s > between the numbers etc e.g. 15554256987 should be formatted as > 1-555-425-6987. What have you tried? What did you expect and what did your script do? Are you sure all your numbers have exactly 11 digits? Here's a 'brute force' method to insert dashes at the positions you specified. You might want to turn it into a function ... and change the positions (and quantity) of dashes to insert. #v+ <?php $number = '15554256987'; $number = substr($number, 0, 1) . '-' . substr($number, 1); // now $number = '1-5554256987'; $number = substr($number, 0, 5) . '-' . substr($number, 5); // now $number = '1-555-4256987'; $number = substr($number, 0, 9) . '-' . substr($number, 9); // now $number = '1-555-425-6987'; ?> #v- -- --= my mail box only accepts =-- --= Content-Type: text/plain =-- --= Size below 10001 bytes =-- |
|
|||
|
Like Pedro said, a few problems...
what if I enter (555) 555-1212, or (555)-333-3321 or +1 555 333 1222 or, if I'm from germany... 011 49 030 30 30 90 (phone number of my favorite hotel in Berlin...) Pedro Graca wrote: > Shay Hurley wrote: >> this is probably a stupid question so apologies in advance. >> >> I am trying to format a number to look like a phone number with "-"'s >> between the numbers etc e.g. 15554256987 should be formatted as >> 1-555-425-6987. > > > What have you tried? > What did you expect and what did your script do? > > Are you sure all your numbers have exactly 11 digits? > > > > > > Here's a 'brute force' method to insert dashes at the positions you > specified. You might want to turn it into a function ... and change > the positions (and quantity) of dashes to insert. > > #v+ > <?php > $number = '15554256987'; > > $number = substr($number, 0, 1) . '-' . substr($number, 1); > // now $number = '1-5554256987'; > > $number = substr($number, 0, 5) . '-' . substr($number, 5); > // now $number = '1-555-4256987'; > > $number = substr($number, 0, 9) . '-' . substr($number, 9); > // now $number = '1-555-425-6987'; >> > #v- |
|
|||
|
Sorry, I should have been clearer in my post. I am getting a list of
numbers of different lengths, could be anything from 5 digits (directory enquiries) to local numbers (8 digits) to international numbers (12 or 13 numbers). There is no foratting on the numbers I receive from the db so they are just like 14567890, 11811, 15552345678, 447878787712. Agelmar wrote: > Like Pedro said, a few problems... > what if I enter (555) 555-1212, or (555)-333-3321 or +1 555 333 1222 or, if > I'm from germany... 011 49 030 30 30 90 (phone number of my favorite hotel > in Berlin...) > > > > Pedro Graca wrote: > >>Shay Hurley wrote: >> >>>this is probably a stupid question so apologies in advance. >>> >>>I am trying to format a number to look like a phone number with "-"'s >>>between the numbers etc e.g. 15554256987 should be formatted as >>>1-555-425-6987. >> >> >>What have you tried? >>What did you expect and what did your script do? >> >>Are you sure all your numbers have exactly 11 digits? >> >> >> >> >> >>Here's a 'brute force' method to insert dashes at the positions you >>specified. You might want to turn it into a function ... and change >>the positions (and quantity) of dashes to insert. >> >>#v+ >><?php >>$number = '15554256987'; >> >>$number = substr($number, 0, 1) . '-' . substr($number, 1); >>// now $number = '1-5554256987'; >> >>$number = substr($number, 0, 5) . '-' . substr($number, 5); >>// now $number = '1-555-4256987'; >> >>$number = substr($number, 0, 9) . '-' . substr($number, 9); >>// now $number = '1-555-425-6987'; >> >>#v- > > > |
|
|||
|
Then it becomes really easy.
$max = strlen($phonenumber); // assuming phonenumber is a string representation $final = ""; // final result for ($i = 0; $i < $max; $i++) { if (is_int($phonenumber{$i})) $final = $final.$phonenumber{$i}; } (not tested, but should work...) Shay Hurley wrote: > Sorry, I should have been clearer in my post. I am getting a list of > numbers of different lengths, could be anything from 5 digits > (directory enquiries) to local numbers (8 digits) to international > numbers (12 or 13 numbers). There is no foratting on the numbers I > receive from the db > so they are just like 14567890, 11811, 15552345678, 447878787712. > > > Agelmar wrote: >> Like Pedro said, a few problems... >> what if I enter (555) 555-1212, or (555)-333-3321 or +1 555 333 1222 >> or, if I'm from germany... 011 49 030 30 30 90 (phone number of my >> favorite hotel in Berlin...) >> >> >> >> Pedro Graca wrote: >> >>> Shay Hurley wrote: >>> >>>> this is probably a stupid question so apologies in advance. >>>> >>>> I am trying to format a number to look like a phone number with >>>> "-"'s between the numbers etc e.g. 15554256987 should be formatted >>>> as 1-555-425-6987. >>> >>> >>> What have you tried? >>> What did you expect and what did your script do? >>> >>> Are you sure all your numbers have exactly 11 digits? >>> >>> >>> >>> >>> >>> Here's a 'brute force' method to insert dashes at the positions you >>> specified. You might want to turn it into a function ... and change >>> the positions (and quantity) of dashes to insert. >>> >>> #v+ >>> <?php >>> $number = '15554256987'; >>> >>> $number = substr($number, 0, 1) . '-' . substr($number, 1); >>> // now $number = '1-5554256987'; >>> >>> $number = substr($number, 0, 5) . '-' . substr($number, 5); >>> // now $number = '1-555-4256987'; >>> >>> $number = substr($number, 0, 9) . '-' . substr($number, 9); >>> // now $number = '1-555-425-6987'; >>> >>> #v- |