64 votes

Comment obtenir un séparateur de répertoire indépendant de la plate-forme en PHP?

Je construis une chaîne de chemin en PHP. J'ai besoin que cela fonctionne sur toutes les plateformes (c'est-à-dire Linux, Windows, OS X).

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

Suppose que $someDirectory et $someFile sont correctement formatés au moment de l'exécution sur les différentes plateformes. Cela fonctionne parfaitement sur Linux et OS X, mais pas sur Windows. Le problème est le caractère /, qui je pensais fonctionnerait pour Windows.

Y a-t-il une fonction PHP ou un autre astuce pour le changer en \ au moment de l'exécution sur Windows ?

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

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

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

117voto

genesis Points 32591

Essayez celui-ci

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", "/");

8voto

Maxim Mikhisor Points 21
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')           
    define("SEPARATOR", "\\");
else 
    define("SEPARATOR", "/");

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

translated to :

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')           
    define("SEPARATOR", "\\");
else 
    define("SEPARATOR", "/");

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X