php url взрывается

Я хочу взять свой продукт с моего URL. Например:

http://www.website.com/product-category/iphone 

Я хочу захватить iphone, и это хорошо с моим кодом, но у меня есть выпадающий список для сортировки продуктов, и по нажатию кнопки изменится URL-адрес и добавьте запрос, например:

 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 

Мой текущий код

 $r = $_SERVER['REQUEST_URI']; $r = explode('/', $r); $r = array_filter($r); $r = array_merge($r, array()); $endofurl = $r[1]; echo $endofurl; 

Как можно все время захватывать секцию iphone.

ура

Вы можете использовать parse_url() PHP для разделения URL-адреса для вас, а затем получить доступ к параметру path и получить его конец:

 $r = parse_url($url); $endofurl = substr($r['path'], strrpos($r['path'], '/')); 

Это проанализирует URL-адрес, а затем возьмет «подстроку» URL-адреса, начиная с последнего найденного / в пути.

Вы также можете использовать explode('/') как вы сейчас делаете на пути:

 $path = explode($r['path']); $endofurl = $path[count($path) - 1]; 

UPDATE (используя strrchr() , отмеченный @ x4rf41):
Более короткий метод получения конца строки, противоположный substr() + strrpos() заключается в использовании strrchr() :

 $endofurl = strrchr($r['path'], '/'); 

Если вы воспользуетесь параметрами параметров parse_url() , вы также можете получить только путь , используя PHP_URL_PATH например $ r = parse_url ($ url, PHP_URL_PATH);

Или самый короткий метод:

 $endofurl = strrchr(parse_url($url, PHP_URL_PATH), '/'); 

Если вы хотите получить последний элемент массива, вы можете использовать функцию конца . Остальная часть вашего кода, похоже, работает.

 $endofurl = end($r); 

Вы также можете использовать функции parse_url и strrchr, чтобы сделать их более краткими:

 $endofurl = strrchr(parse_url($url, PHP_URL_PATH), '/'); 

Просто вычислил это. Это сейчас работает с

 $r = $_SERVER['REQUEST_URI']; $r = explode('/', $r); $r = array_filter($r); $r = array_merge($r, array()); $r = preg_replace('/\?.*/', '', $r); $endofurl = $r[1]; echo $endofurl;