1

この質問に似ています:URLの最後のパスを取得するにはどうすればよいですか?

... URLの最後のパスだけを返す代わりに、最後の4つを返したい:

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

上記のコードは、私がリンクした以前のStackOverflowアイテムからのものです。title-of-blog-postのみを返すことを除いて、私が望むことを実行します。次のように、/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 つの厳しい要件がありましたが、これは達成されますが、ブレア・マクミランの答えはより柔軟で、「blog-name」の後に何でも取ることができるので、覚えておいてください。

于 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 に答える