如何获取URL相对“深度”?

发布于 2024-10-17 10:40:27 字数 194 浏览 3 评论 0原文

在 PHP 中,如何根据我所在的位置获取 URL 相对指示符?示例:

Location                 Return

example.com              ./
example.com/sub          ../
example.com/sub/sub      ../../

...

In PHP, how would I get the URL relative indicators based on where I'm located? Examples:

Location                 Return

example.com              ./
example.com/sub          ../
example.com/sub/sub      ../../

...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

人事已非 2024-10-24 10:40:27

考虑上面的示例:

$url = 'example.com/sub/sub/';
$parts = explode('/', $url);
$parts = array_filter($parts, 'strlen');
$path = count($parts) == 1 ? './' : str_repeat('../', count($parts)-1);

此代码忽略空部分和尾部斜杠(例如:example.com//sub/)。

Considering your above example:

$url = 'example.com/sub/sub/';
$parts = explode('/', $url);
$parts = array_filter($parts, 'strlen');
$path = count($parts) == 1 ? './' : str_repeat('../', count($parts)-1);

This code ignores the empty parts and trailing slashes (e.g.: example.com//sub/).

你的呼吸 2024-10-24 10:40:27

仅仅计算 url 中斜杠的数量是不够的。您可以使用 preg_match_all 来实现这一点。

<?php
preg_match_all('/\//',$url,$matches);
echo count($matches);
?>

(未经测试的代码)

Wouldn't just counting the number of slashes in the url suffice. You could use preg_match_all for that.

<?php
preg_match_all('/\//',$url,$matches);
echo count($matches);
?>

(untested code)

对不⑦ 2024-10-24 10:40:27

嗯,快速猜测一下:

function getDeepness($url){
  $lvls = substr_count($url, '/');

  if(!$lvls){
    return "./";
  }

  return str_repeat("../", $lvls);
}

Um, a quick guess:

function getDeepness($url){
  $lvls = substr_count($url, '/');

  if(!$lvls){
    return "./";
  }

  return str_repeat("../", $lvls);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文