Как получить независимый от платформы разделитель каталогов в PHP? - PullRequest
63 голосов
/ 11 июля 2011

Я строю строку пути в PHP.Мне нужно, чтобы он работал на разных платформах (например, Linux, Windows, OS X).Я делаю это:

$path = $someDirectory.'/'.$someFile;

Предположим, $someDirectory и $someFile правильно отформатированы во время выполнения на различных платформах.Это прекрасно работает на Linux и OS X, но не на Windows.Проблема заключается в символе /, который, как я думал, будет работать для Windows.

Есть ли функция PHP или какой-то другой трюк для переключения на \ во время выполнения в Windows? РЕДАКТИРОВАТЬ: Просто чтобы быть ясно, результирующая строка

c:\Program Files (x86)\Sitefusion\Sitefusion.org\Defaults\pref/user.preferences

в Windows.Очевидно, что сочетание косых черт сбивает с толку Windows.

Ответы [ 2 ]

116 голосов
/ 11 июля 2011

Попробуйте это

DIRECTORY_SEPARATOR

$patch = $somePath. DIRECTORY_SEPARATOR .$someFile

или вы можете определить свой

PHP_OS == "Windows" ||
    PHP_OS == "WINNT" ? define("SEPARATOR", "\\") : define("SEPARATOR", "/"); 
8 голосов
/ 27 ноября 2013
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')           
    define("SEPARATOR", "\\");
else 
    define("SEPARATOR", "/");

http://php.net/manual/en/function.php-uname.php

...