Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php url爆炸_Php_Arrays_Url_Explode - Fatal编程技术网

php url爆炸

php url爆炸,php,arrays,url,explode,Php,Arrays,Url,Explode,我想从我的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=n

我想从我的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部分呢


Cheers

如果要检索数组的最后一个元素,可以使用该函数。代码的其余部分似乎正在工作

$endofurl = end($r);
您还可以利用和功能使其更加简洁:

$endofurl = strrchr(parse_url($url, PHP_URL_PATH), '/');
您可以使用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];
更新(使用@x4rf41指出):
substr()
+
strrpos()
相反,获取字符串结尾的较短方法是使用
strrchr()

如果您利用了
parse_url()
的选项参数,您还可以像这样使用
PHP_url_path
来获取路径 $r=parse_url($url,PHP_url_路径)

或者,最短的方法:

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

产品名称是否始终跟随/product category/?甚至更短的名称是
$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;