Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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_Url_Path_Explode_Permalinks - Fatal编程技术网

Php 如何返回url中的最后四个路径?

Php 如何返回url中的最后四个路径?,php,url,path,explode,permalinks,Php,Url,Path,Explode,Permalinks,与这个问题类似: …除了返回URL中的最后一个路径之外,我想返回最后四个路径: <?php $url = 'http://blogs.mydomain.com/blog-name/2012/04/21/title-of-the-blog-post'; print_r(parse_url($url)); $url_path = parse_url($url, PHP_URL_PATH); $parts = explode('/', $url_path); $relati

与这个问题类似:

…除了返回URL中的最后一个路径之外,我想返回最后四个路径:

<?php 
  $url = 'http://blogs.mydomain.com/blog-name/2012/04/21/title-of-the-blog-post';
  print_r(parse_url($url));
  $url_path = parse_url($url, PHP_URL_PATH);
  $parts = explode('/', $url_path);
  $relative_permalink = end($parts);
echo $relative_permalink;
?>
这段代码也让我达到了目的:

$url_endpoint = http://blogs.mydomain.com/blog-name/2012/04/21/title-of-the-blog-post;
$url_endpoint = parse_url( $url_endpoint );
$url_endpoint = $url_endpoint['path'];
除此之外,它还返回/blog name/及其后面的所有内容。我想排除/blog名称/

有没有关于如何处理这两个代码段的想法?

试试:

list(, $last_four) = explode('/blog-name/', $url);
--更新--

$url = 'http://blogs.mydomain.com/blog-name/2012/04/21/blog-title/';
$url_path = parse_url($url, PHP_URL_PATH);

// We are exploding on /, so there may be some empty array elements
// passing them through array_filter will remove them
$parts = array_filter(explode('/', $url_path), 'strlen');

// Grab the last 4 elements of array
$relative_permalink = array_slice($parts, -4);

// Put humpty back together again
echo implode('/', $relative_permalink);

你的问题在最后4个问题中有一个困难的要求,这将完成,但是Blair McMillan的回答更灵活,因为它允许你在“blog name”之后选择任何内容,所以请记住。

如果你想在第一个之后选择所有内容,那么
数组\u shift()不是更容易吗
是否关闭第一个元素并返回其他元素

<?php 
  $url = 'http://blogs.mydomain.com/blog-name/2012/04/21/title-of-the-blog-post';
  print_r(parse_url($url));
  $url_path = parse_url($url, PHP_URL_PATH);
  $parts = explode('/', $url_path);
  $static_name = array_shift($parts);
  $relative_permalink = implode('/', $parts);
  echo $relative_permalink;
?>

试试:


要获取URL中的路径,可以使用:


a) 它不一定给出最后4个部分,只是“/blog name/”之后的所有内容-不管是什么b)它取决于文件所在的路径,它不应该是她正在寻找的路径。这是一个wordpress博客。他在寻找URL的最后4部分,你的代码可能适合他的例子。它可能不适用于实际用例。请重新阅读问题。她想要在
/blog name/
之后的一切。即使格式发生变化,我的代码也会这样做。'I want return the last four'别误会,我从来没有说过你的解决方案是无效的-在我看来,只有更干净的方法(参见Mike Purcells array_slice)在我的脑海中是有意义的,但在我尝试运行它时却不太管用:--有什么想法吗?这就是我想要的。谢谢。如果“blog post”后面的数字是动态的,那么这绝对是一个更灵活的选择。
$url = 'http://blogs.mydomain.com/blog-name/2012/04/21/blog-title/';
$url_path = parse_url($url, PHP_URL_PATH);

// We are exploding on /, so there may be some empty array elements
// passing them through array_filter will remove them
$parts = array_filter(explode('/', $url_path), 'strlen');

// Grab the last 4 elements of array
$relative_permalink = array_slice($parts, -4);

// Put humpty back together again
echo implode('/', $relative_permalink);
<?php 
  $url = 'http://blogs.mydomain.com/blog-name/2012/04/21/title-of-the-blog-post';
  print_r(parse_url($url));
  $url_path = parse_url($url, PHP_URL_PATH);
  $parts = explode('/', $url_path);
  $static_name = array_shift($parts);
  $relative_permalink = implode('/', $parts);
  echo $relative_permalink;
?>
<?php 
$url = 'http://blogs.mydomain.com/blog-name/2012/04/21/title-of-the-blog-post';
$url_path = parse_url($url, PHP_URL_PATH);
$parts = explode('/', $url_path);
$relative_permalink = implode('/', array_slice($parts, -4));
echo $relative_permalink;
?>
$url = 'http://blogs.mydomain.com/blog-name/2012/04/21/title-of-the-blog-post';
$urlInfo = parse_url($url);
print_r($urlInfo);
$urlPath = $urlInfo['path'];
echo "\n";