I am wanting to grab my product from my url. For example:
http://www.website.com/product-category/iphone
I am wanting to grab the iphone and that is fine with my code but I have a dropdown to sort products and which clicked will change the url and add a query like:
http://www.website.com/product-category/iphone?orderby=popularity
http://www.website.com/product-category/iphone?orderby=new
http://www.website.com/product-category/iphone?orderby=price
http://www.website.com/product-category/iphone?orderby=price-desc
My current code is
$r = $_SERVER['REQUEST_URI'];
$r = explode('/', $r);
$r = array_filter($r);
$r = array_merge($r, array());
$endofurl = $r[1];
echo $endofurl;
How is it possible to grab the iphone section all the time.
Cheers
You can use PHP's
parse_url()
function to split the URL for you and then access thepath
parameter and get the end of it:This will parse the URL and then take a "sub-string" of the URL starting from the last-found
/
in the path.You can alternatively use
explode('/')
as you're currently doing on the path:UPDATE (using
strrchr()
, pointed out by @x4rf41):A shorter method of obtaining the end of the string, opposed to
substr()
+strrpos()
is to usestrrchr()
:If you take advantage of
parse_url()
's option parameters, you can also get just the path by usingPHP_URL_PATH
like $r = parse_url($url, PHP_URL_PATH);Or, the shortest method:
Just figured it out.This now works with
If you want to retrieve the last element of the array, you can use the end function. The rest of your code seems to be working.
You could also leverage parse_url and strrchr functions to make it more concise: