Как получить URL относительной "глубины"? - PullRequest
0 голосов
/ 16 февраля 2011

В PHP, как я могу получить относительные показатели URL в зависимости от того, где я нахожусь?Примеры:

Location                 Return

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

...

Ответы [ 3 ]

2 голосов
/ 16 февраля 2011

Учитывая приведенный выше пример:

$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/).

1 голос
/ 16 февраля 2011

Хм, быстрое предположение:

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

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

  return str_repeat("../", $lvls);
}
1 голос
/ 16 февраля 2011

Недостаточно просто посчитать количество слешей в URL. Для этого вы можете использовать preg_match_all .

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

(непроверенный код)

...