[英]How to handle paths in PHP for command line scripting (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);
}
任何建議都非常感謝。
這將為您工作:
<?
$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)不勝枚舉:
C:\Users\Administrator\path\to\file.txt
筆記:
我從未聽說過一個名為get_user_home_folder()
的php函數,我認為這是一個自定義函數。
這也許可以幫助您。
define('DS', is_windows_os() ? '\\' : '/');
$user_home = get_user_home_folder();
$filePath = $user_home.DS."path".DS."to".DS."file.txt"
使用常量DS作為路徑,並將根據需要自動更改分隔符
PHP會盡可能嘗試將“ /”轉換為正確的分隔符。 如果您不想依賴該行為,它還會提供一個稱為DIRECTORY_SEPARATOR
的內置常量。
該常數和join
函數可以很好地一起構建路徑。
例如$fullPath = join(DIRECTORY_SEPARATOR, [$userHome, 'path', 'to', 'file.txt']);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.