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