如何在PHP中处理命令行脚本(Windows)的路径?

时间:2014-01-25 14:23:49

标签: php windows

我正在使用PHP作为我正在构建的命令行工具。我的工具必须在Windows和基于* NIX的系统上工作。我在Ubuntu Linux中的主要开发环境。

我想知道每次处理文件时我是否应该处理目录分隔符,或者PHP会照顾或者对我来说?例如:

在Linux中:

$user_home = get_user_home_folder();
$filePath = "{$user_home}/path/to/file.txt";

上面的代码是否可以在Windows上无需修改,或者我应该总是这样做:

$user_home = get_user_home_folder();
$filePath = "{$user_home}/path/to/file.txt";
if(is_windows_os()) {
   $filePath = str_replace('/','\\',$filePath);
}

非常感谢任何建议。

3 个答案:

答案 0 :(得分:1)

这对你有用:

<?
$filePath = "/path/to/file.txt";

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
    //windows
$filePath = getenv('HOME').str_replace("/", "\\", $filePath);
echo $filePath;
} else {
    //linux
$user_home = get_user_home_folder();
$filePath = $user_home.$filePath;
echo $filePath;
}
?>

在我的情况下(windows)outuputs:

C:\Users\Administrator\path\to\file.txt

备注:
我从未听说过一个名为get_user_home_folder()的PHP函数我认为它是一个自定义函数。

答案 1 :(得分:1)

这可能对你有帮助。

define('DS', is_windows_os() ? '\\' : '/');
$user_home = get_user_home_folder();
$filePath = $user_home.DS."path".DS."to".DS."file.txt"

对路径使用常量DS,并在需要分隔符时自动更改

答案 2 :(得分:1)

PHP会尝试将'/'转换为正确的分隔符。如果您不想依赖该行为,它还会提供一个名为DIRECTORY_SEPARATOR的内置常量。

该常量和join函数可以很好地协同构建路径。

e.g。 $fullPath = join(DIRECTORY_SEPARATOR, [$userHome, 'path', 'to', 'file.txt']);