PHP:跨操作系统通用路径的一种好方法(斜线方向)

she*_*iel 8 php operating-system path

我唯一关心的是能够处理跨OS的路径,主要是关于目录分隔符的后退和正斜杠.

DIRECTORY_SEPARATOR然而,我正在使用:

  1. 写作很长

  2. 路径可能来自不同的来源,不一定由您控制

我目前正在使用:

    function pth($path)
    {
        $runningOnWindows = (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN');
        $slash = $runningOnWindows ? '\\' : '/';
        $wrongSlash = $runningOnWindows ? '/' : '\\' ;
        return (str_replace($wrongSlash, $slash, $path));
    }
Run Code Online (Sandbox Code Playgroud)

只是想知道我正在重新发明的语言中没有任何东西,

是否已经有内置的PHP功能来执行此操作?

Kin*_*nch 29

我知道DIRECTORY_SEPARATOR,

但是:1.写作很长

懒惰永远不是任何理由

$path = (DIRECTORY_SEPARATOR === '\\')
      ? str_replace('/', '\\', $subject)
      : str_replace('\\', '/', $subject);
Run Code Online (Sandbox Code Playgroud)

要么

$path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path);
Run Code Online (Sandbox Code Playgroud)

这将在一个步骤中将"正确的"替换为自身,但这并没有任何区别.

如果您确定知道路径存在,则可以使用realpath()

$path = realpath($path);
Run Code Online (Sandbox Code Playgroud)

但是,这根本不需要,因为每个操作系统都将正斜杠理解/为有效的目录分隔符(甚至是窗口).

  • 天哪,你甚至可以在 Windows 上混合斜杠。`'C:\Foo\Bar/baz/what.php'` 是 PHP 中完全合法的路径。 (2认同)

Jon*_*Jon 5

您缺少DIRECTORY_SEPARATOR预定义的常量。