Search code examples
phpexplode

How to explode the string back from the second or third string delimiter?


How can I get the 800-555 from this 800-555-5555 with explode()?

Here is a good example:

$rawPhoneNumber = "800-555-5555"; 

$phoneChunks = explode("-", $rawPhoneNumber);
First chunk = $phoneChunks[0]; //800
Second chunk = $phoneChunks[1]; //555
Third Chunk chunk = $phoneChunks[2]; //5555

But how can I get the 800-555?

Okay, I see, here need more comment... So, this is only an example... In real I add a word (now $word) to string delimiter and my string is a full article... I want that, if this word second time published in the article, with str_word_count() will count, how many characters was in the text to the second (or third, if I want that) $word...

So I want that, I get the string from the second "hit" to back.

Okay, here is a more obvious example:

$text = oh my god, thank you the lot of downvotes, geniuses *.*
$explode = explode(",", $text);
$whatiwant = $explode?? // I WANT THE STRING FROM THE SECOND "," TO BACK

So I want that $whatiwant = oh my god, thank you the lot of downvotes


Solution

  • Implode, explode and array_slice.
    I use array_slice because that makes the function more dynamic.

    Now you can just set the $items to get the number of items you want.
    If you set a negative value it counts backwards.

    $delim = ",";
    $items =2;
    $text = "oh my god, thank you the lot of downvotes, geniuses *.*";
    $whatiwant = implode($delim, array_slice(explode($delim, $text),0,$items));
    Echo $whatiwant;
    

    https://3v4l.org/KNSC4

    You could also have an start variable to make the start position dynamic.

    https://3v4l.org/XD0NV