UNIX / Windows上的斜杠和反斜杠均匀性

时间:2013-02-01 19:39:22

标签: php

我正在编写PHP类,我希望它与跨平台兼容。我需要爆炸路径来查找特定的文件夹名称。我该如何选择分隔符?该路径在UNIX上包含'/',在Windows上包含'\'。

在这个特定示例中,我想获取存储包含文件的目录的名称。我用这个:

private function find_lib_dir() {
    $array_path = explode('/', __DIR__);
    return $array_path[count($array_path)-1];
}

在这种情况下(更一般地说),我该怎么做才能确保它在Windows和UNIX上都能正常工作?

谢谢!

4 个答案:

答案 0 :(得分:8)

您可以按如下方式使用DIRECTORY_SEPARATOR

$array_path = explode(DIRECTORY_SEPARATOR, __DIR__);

答案 1 :(得分:2)

使用basename()dirname()进行路径操作,而不是自己解析。

答案 2 :(得分:0)

您应该使用DIRECTORY_SEPARATOR常量

答案 3 :(得分:0)

我会做这样的事情:

private function find_lib_dir() {
    // convert windows backslashes into forward slashes
    $dir = str_replace("\\", "/", __DIR__);

    $array_path = explode('/', $dir);
    return $array_path[count($array_path)-1];
}

对于您的特定示例,您可以执行其他答案提供的内容。但是,如果您自己构建字符串,请执行以下操作:

__DIR__ . '/path/to/dir';

然后尝试将其爆炸,然后您将在UNIX与Windows系统上遇到问题。在这种情况下,最好(imo)将所有反斜杠替换为正斜杠(两个系统都支持)。然后基于正斜杠爆炸。