1

类似于这个问题:如何获取 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;
?>

上面的代码来自我之前链接到的 Stack Overflow 项目。它有点像我想要的,除了它只返回博客文章的标题;我想返回 /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/ 以及它之后的所有内容。我想排除 /blog-name/

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

4

5 回答 5

1
list(, $last_four) = explode('/blog-name/', $url);
于 2012-04-27T01:07:17.550 回答
1

尝试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 的答案更加灵活,因为它允许您在“博客名称”之后采取任何内容,所以请记住这一点。

于 2012-04-27T01:08:08.450 回答
1

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;
?>
于 2012-04-27T01:08:08.920 回答
0

尝试:

<?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;
?>
于 2012-04-27T01:12:30.147 回答
0

要获取 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";
于 2012-04-27T01:16:33.920 回答