如何在PHP中获得独立于平台的目录分隔符?

如何在PHP中获得独立于平台的目录分隔符?,php,directory,filepath,Php,Directory,Filepath,我正在用PHP构建一个路径字符串。我需要它跨平台工作(即Linux、Windows、OSX)。 我正在这样做: $path = $someDirectory.'/'.$someFile; 假设$someDirectory和$someFile在各种平台上运行时格式正确。这在Linux和OSX上运行得很好,但在Windows上却不行。问题是/字符,我认为它适用于Windows 是否有PHP函数或其他技巧可以在Windows上运行时将其切换到\ 编辑:为了清楚起见,结果字符串是 c:\Program

我正在用PHP构建一个路径字符串。我需要它跨平台工作(即Linux、Windows、OSX)。 我正在这样做:

$path = $someDirectory.'/'.$someFile;
假设
$someDirectory
$someFile
在各种平台上运行时格式正确。这在Linux和OSX上运行得很好,但在Windows上却不行。问题是
/
字符,我认为它适用于Windows

是否有PHP函数或其他技巧可以在Windows上运行时将其切换到
\

编辑:为了清楚起见,结果字符串是

c:\Program Files (x86)\Sitefusion\Sitefusion.org\Defaults\pref/user.preferences
在窗户上。很明显,斜杠的混合让Windows感到困惑。

试试这个

目录分隔符

$patch = $somePath. DIRECTORY_SEPARATOR .$someFile
或者你可以定义你的

PHP_OS == "Windows" ||
    PHP_OS == "WINNT" ? define("SEPARATOR", "\\") : define("SEPARATOR", "/"); 

值得一提的可能重复:Windows在使用
/
作为目录分隔符时运行良好。通常不需要使其依赖于平台。我不知道,你说的“混音使窗户混乱”是什么意思,谢谢,@AJ。我错过了这个问题。但是,Windows和Linux都支持/那么有什么问题吗?我的实例中的问题是,我动态地(从XULRunner)获取路径的前半部分($someDirectory),它在Windows上使用“\”。PHP以斜杠组合给出“/”和Windows barf。我的服务器重新返回“WINNT”,而不是“Windows”。以防万一。不用麻烦,这不是必需的。这并不是说它非常重要,但
路径分隔符
完全是另一回事(
在*nix上,
在Windows上),它不是
目录分隔符
的同义词。
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')           
    define("SEPARATOR", "\\");
else 
    define("SEPARATOR", "/");