Search code examples
phpreplacepreg-replaceeregi

Remove the first 1 and space before a phone number?


I did searches and figured this would be an easy find. Though I haven't found anything related to exactly what I need and similar questions are from people from overseas that have different phone formats with plus signs. A lot of my phone number entries start with a 1 and a space. I did a simple str_replace then I realized if a number has a 1 in the middle followed by a space, then that would mess it up

$string = trim($string);

$string = str_replace('1 ', '', $string); 

That works for phone numbers beginning with

1 800-555-1111

1 222-555-1111

But in the case the phone number is

1 222 551 1111

Then that 551 and space would mess things up. How can it be rewitten so that only the first 1 and the following space is removed and the rest is untouched? Thanks.

EDIT

I forgot to mention that the entries do not always start with a 1 and a space. Sometimes they may be

888-555-1111

888 555 1111

1 888 555 1111


Solution

  • You can use regex to achieve this:-

    $phone_number = '1 800-555-1111'
    echo preg_replace('/^\d\s+/', '', $phone_number);
    // Will echo 800-555-1111
    
    $phone_number = '1 800 555 1111'
    echo preg_replace('/^\d\s+/', '', $phone_number);
    // Will echo 800 555 1111