phpurl

Get Last Part of URL PHP


I'm just wondering how I can extract the last part of a URL using PHP.

The example URL is:

http://domain.example/artist/song/music-videos/song-title/9393903

Now how can I extract the final part using PHP?

9393903

There is always the same number of variables in the URL, and the id is always at the end.


Solution

  • You can use preg_match to match the part of the URL that you want.

    In this case, since the pattern is easy, we're looking for a forward slash (\/ and we have to escape it since the forward slash denotes the beginning and end of the regular expression pattern), along with one or more digits (\d+) at the very end of the string ($). The parentheses around the \d+ are used for capturing the piece that we want: namely the end. We then assign the ending that we want ($end) to $matches[1] (not $matches[0], since that is the same as $url (ie the entire string)).

    $url='http://domain.example/artist/song/music-videos/song-title/9393903';
    
    if(preg_match("/\/(\d+)$/",$url,$matches))
    {
      $end=$matches[1];
    }
    else
    {
      //Your URL didn't match.  This may or may not be a bad thing.
    }
    

    Note: You may or may not want to add some more sophistication to this regular expression. For example, if you know that your URL strings will always start with http:// then the regex can become /^http:\/\/.*\/(\d+)$/ (where .* means zero or more characters (that aren't the newline character)).