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