web-dev-qa-db-fra.com

Comment obtenir un séparateur de répertoire indépendant de la plateforme en PHP?

Je construis une chaîne de chemin en PHP. J'en ai besoin pour fonctionner sur toutes les plates-formes (c'est-à-dire Linux, Windows, OS X). Je fais ça:

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

Supposons que $someDirectory et $someFile sont formatés correctement au moment de l'exécution sur les différentes plates-formes. Cela fonctionne à merveille sous Linux et OS X, mais pas sous Windows. Le problème est le / caractère, que je pensais fonctionner pour Windows.

Existe-t-il une fonction PHP ou une autre astuce pour passer à \ lors de l'exécution sur Windows?

MODIFIER: Juste pour être clair, la chaîne résultante est

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

sous Windows. Évidemment, le mélange de barres obliques confond Windows.

63
retrodrone

Essaye celui-là

DIRECTORY_SEPARATOR

$patch = $somePath. DIRECTORY_SEPARATOR .$someFile

ou vous pouvez définir le vôtre

PHP_OS == "Windows" ||
    PHP_OS == "WINNT" ? define("SEPARATOR", "\\") : define("SEPARATOR", "/"); 
116
genesis
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')           
    define("SEPARATOR", "\\");
else 
    define("SEPARATOR", "/");

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

8
Maxim Mikhisor