从URL获取第一个子目录名称

时间:2014-05-25 13:55:22

标签: php regex string

我一直在尝试使用各种字符串操作函数获取URL的第一个子目录,并且遇到了很多麻烦。我想知道是否有人知道一个简单的方法来实现这一目标?

我感谢任何建议,提前谢谢!

http://www.domain.com/pages/images/apple.png //output: pages

www.domain.com/pages/b/c/images/car.png // output: pages

domain.com/one/apple.png // output: one

3 个答案:

答案 0 :(得分:3)

您可以使用php函数parse_url();

$url = 'domain.com/one/apple.png';
$path = parse_url($url, PHP_URL_PATH);

$firstSubDir = explode('/', $path)[1]; // [0] is the domain [1] is the first subdirectory, etc.
echo $firstSubDir; //one

答案 1 :(得分:0)

function startsWith($haystack, $needle)
{
    return $needle === "" || strpos($haystack, $needle) === 0;
}

$url = "http://www.domain.com/pages/images/apple.png";

$urlArr = explode('/', $url);

echo (startsWith($url, 'http')) ? $urlArr[3] : $urlArr[1]; // Should echo 'pages'

以上内容适用于有和没有' http'作为url-prefix case。

答案 2 :(得分:0)

从URL获取第一条路径的替代函数(包含或不包含scheme)。

function domainpath($url = '')
{
    $url        = preg_match("@^https?://@", $url) ? $url : 'http://' . $url;
    $url        = parse_url($url);
    $explode    = explode('/', $url['path']);

    return $explode[1];
}

echo domainpath('http://www.domain.com/pages/images/apple.png');
echo domainpath('https://domain.com/pages/images/apple.png');
echo domainpath('www.domain.com/pages/b/c/images/car.png');
echo domainpath('domain.com/one/apple.png');