我正在编写PHP类,我希望它与跨平台兼容。我需要爆炸路径来查找特定的文件夹名称。我该如何选择分隔符?该路径在UNIX上包含'/',在Windows上包含'\'。
在这个特定示例中,我想获取存储包含文件的目录的名称。我用这个:
private function find_lib_dir() {
$array_path = explode('/', __DIR__);
return $array_path[count($array_path)-1];
}
在这种情况下(更一般地说),我该怎么做才能确保它在Windows和UNIX上都能正常工作?
谢谢!
答案 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)将所有反斜杠替换为正斜杠(两个系统都支持)。然后基于正斜杠爆炸。