2013-02-27 1 views
5

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

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 все время.

Приветствия

+0

Будет ли название продукта всегда следует/категории товара /? – mkaatman

ответ

5

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

$endofurl = end($r); 

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

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

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

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

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

Вы можете использовать в качестве альтернативы 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), '/'); 
+0

еще короче будет $ endofurl = strrchr (parse_url ($ url, PHP_URL_PATH), '/'); ' – x4rf41

2

Просто понял, что это out.This теперь работает с

$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;