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


How do I return last four paths in url?

类似于这个问题:如何获取URL中的最后一个路径?

。除了不只返回 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;
?>

上面的代码来自我链接到的早期堆栈溢出项。它有点像我想要的,除了它只返回博客文章的标题;我想返回/blog-name/之后的所有内容,如下所示:

/20120/04/21/title-of-blog-post

这段代码也让我到达那里:

$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/和它之后的所有内容。我想排除/博客名称/

关于我如何操作这些片段中的任何一个的任何想法?

尝试array_slice:

$relative_permalink = array_slice($parts, -4);

--更新--

$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 的回答更灵活,因为它允许你在"博客名称"之后使用任何内容,所以请记住这一点。

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

如果你想要第一个元素之后的所有内容,那么array_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;
?>

尝试:

<?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 中的路径,可以使用parse_url:

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