7

我正在编写一个 PHP 类,我希望它能够跨平台兼容。我需要分解路径以找到特定的文件夹名称。我为分隔符选择什么?该路径在 UNIX 上将包含“/”,在 Windows 上将包含“\”。

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

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

在这种情况下(更一般地),我能做些什么来确保它可以在 Windows 和 UNIX 上运行?

谢谢!

4

4 回答 4

9

您可以DIRECTORY_SEPARATOR按如下方式使用:

$array_path = explode(DIRECTORY_SEPARATOR, __DIR__);
于 2013-02-01T19:43:24.203 回答
2

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

于 2013-02-01T19:40:55.783 回答
0

你应该使用DIRECTORY_SEPARATOR常量

于 2013-02-01T19:43:04.960 回答
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)将所有反斜杠替换为正斜杠(两个系统都支持)。然后基于正斜线爆炸。

于 2013-02-01T19:53:23.503 回答