Я хочу взять свой продукт с моего 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;