Wie bekomme ich einen plattformunabhängigen Verzeichnistrenner in PHP?

Lesezeit: 2 Minuten

Benutzer-Avatar
Retrodrohne

Ich baue eine Pfadzeichenfolge in PHP. Ich brauche es, um plattformübergreifend zu arbeiten (dh Linux, Windows, OS X). Ich mache das:

$path = $someDirectory."https://stackoverflow.com/".$someFile;

Davon ausgehen $someDirectory und $someFile werden zur Laufzeit auf den verschiedenen Plattformen korrekt formatiert. Dies funktioniert wunderbar unter Linux und OS X, aber nicht unter Windows. Das Problem ist die / Charakter, von dem ich dachte, dass er für Windows funktionieren würde.

Gibt es eine PHP-Funktion oder einen anderen Trick, um dies umzuschalten? \ zur Laufzeit unter Windows?

BEARBEITEN: Nur um klar zu sein, die resultierende Zeichenfolge ist

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

unter Windows. Offensichtlich verwirrt die Mischung aus Schrägstrichen Windows.

  • mögliches Duplikat von Wie teile ich eine PATH-Variable in PHP richtig auf?

    – AJ.

    11. Juli 2011 um 17:46 Uhr

  • Erwähnenswert: Windows funktioniert bei der Verwendung einwandfrei / als Verzeichnistrenner. Es besteht normalerweise keine Notwendigkeit, es plattformabhängig zu machen. Ich weiß nicht, was du mit “der Mischung” meinst [..] verwirrt Windows”

    – KingCrunch

    11. Juli 2011 um 17:49 Uhr


  • Danke, @AJ. Ich habe diese Frage übersehen.

    – Retrodrone

    11. Juli 2011 um 17:51 Uhr

Benutzer-Avatar
Genesis

Probier diese

DIRECTORY_SEPARATOR

$patch = $somePath. DIRECTORY_SEPARATOR .$someFile

oder Sie können Ihre definieren

PHP_OS == "Windows" ||
    PHP_OS == "WINNT" ? define("SEPARATOR", "\\") : define("SEPARATOR", "https://stackoverflow.com/"); 

  • jedoch unterstützen sowohl Windows als auch Linux / also was ist das Problem?

    – Entstehung

    11. Juli 2011 um 17:52 Uhr

  • Das Problem in meiner Instanz ist, dass ich die erste Hälfte des Pfads ($someDirectory) dynamisch (von XULRunner) erhalte, der unter Windows „\“ verwendet. PHP gibt ‘/’ und Windows barfs bei der Slash-Kombination aus.

    – Retrodrone

    11. Juli 2011 um 17:53 Uhr

  • Anstelle von “Windows” gibt mein Server “WINNT” zurück. Nur für den Fall.

    – spitz

    17. April 2013 um 10:23 Uhr

  • Mach dir keine SorgenDies ist nicht erforderlich.

    – Doppeljosch

    26. Juni 2013 um 1:31 Uhr

  • Nicht, dass es von entscheidender Bedeutung wäre, aber PATH_SEPARATOR ist etwas ganz anderes (: auf *nix, ; unter Windows) und ist kein Synonym für DIRECTORY_SEPARATOR.

    – Eiswasser

    5. Mai 2015 um 9:02 Uhr

if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')           
    define("SEPARATOR", "\\");
else 
    define("SEPARATOR", "https://stackoverflow.com/");

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

1344130cookie-checkWie bekomme ich einen plattformunabhängigen Verzeichnistrenner in PHP?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy