Path Combine
PeterK
- php
Hi!
Ich habe mal ne Frage:
Gibt es sowas wie realpath, bei dem ich den BaseDirechtory angeben kann?
Also z.B.
Combine('d:/web/dynamix/cont/start/', '../news.xml') = 'd:/web/dynamix/cont/news.xml'
Gibts da vieleicht was fertiges oder muss ich doch noch mit basteln anfangen?
Ich meine, man muss ja das Rad nicht neu erfinden...
Peter
Moin!
Gibt es sowas wie realpath, bei dem ich den BaseDirechtory angeben kann?
Wenn du einen kurzen Versuch mit der Suchfunktion auf php.net gemacht hättest, wärst du statt hier im Forum längst bei http://www.php.net/realpath gelandet.
Combine('d:/web/dynamix/cont/start/', '../news.xml') = 'd:/web/dynamix/cont/news.xml'
Die Beschreibung der Funktion deutet sowas an.
- Sven Rautenberg
Und Wenn du richtig gelese hast, dann wüsstest du, dass sich die mit realpath aufgelösten relativen Pfade immer auf den scriptpfad beziehen. Ich hingegen suche eine Möglichkeit einen Relativen Pfad auf nach einer belibigen Basis aufzulösen. Wenn sich jemand mit Windows-Programmierung auskennt:
Es gibt eine WinAPI
Private Declare Function PathCombine Lib "shlwapi.dll" Alias "PathCombineA" (ByVal szDest As String, ByVal lpszDir As String, ByVal lpszFile As String) As Long
Die genau das macht.
Peter
Moin!
Und Wenn du richtig gelese hast, dann wüsstest du, dass sich die mit realpath aufgelösten relativen Pfade immer auf den scriptpfad beziehen. Ich hingegen suche eine Möglichkeit einen Relativen Pfad auf nach einer belibigen Basis aufzulösen. Wenn sich jemand mit Windows-Programmierung auskennt:
Wenn _du_ richtig gelesen hättest, wäre dir aufgefallen, dass in der Beschreibung von realpath() von relativen Pfaden im Vergleich zur Script-Location absolut nichts drinsteht!
Und folgender Code:
echo "Realpath-Test:<br>";
$path1 = "g:/irgendein/toller/pfad/";
$path2 = "../relativer/pfad/zur/datei.ext";
$path=realpath($path1.$path2);
echo "$path1 + $path2 = $path";
Gibt mein mir im Browser aus:
Realpath-Test:
g:/irgendein/toller/pfad/ + ../relativer/pfad/zur/datei.ext = g:\irgendein\toller\relativer\pfad\zur\datei.ext
Anfangs hatte ich den Laufwerksbuchstaben g: (den mein Server nicht kennt!) weggelassen und nur mit Unix-Dateipfaden gearbeitet. Das hat realpath() dazu veranlaßt, den Buchstaben "D:" davorzuhängen, auf dem sich das Skript befindet.
- Sven Rautenberg
Ähmm.. ups.
Ok, du hast recht und ich entschuldige mich hiermit für mein Brett & meinen etwas .. ungezügelten .. Ton.
Aber Danke. Ich hatte jetzt angefangen die Pfade mit Stacks aufzulösen. Aber so ists natürlich Besser.
Vielen Dank und ich hoffe du bist nicht zu sehr sauer. Ich werde mich das nächste mal besser informieren.
Peter
Moin!
Vielen Dank und ich hoffe du bist nicht zu sehr sauer. Ich werde mich das nächste mal besser informieren.
Ausprobieren hätte ja gereicht - und im Sinne der FAQ dann der ergebnislose Versuch ins Posting hineingehört. :)
Abgesehen davon sind gerade bei realpath() dermaßen viel "user-contributed comments" zu lesen, dass das allein vermutlich jegliche Lösung abdecken dürfte.
Zugegeben: realpath() ist keine reine String-Operation. Da werden auch Datei- bzw. Verzeichnisoperationen ausgeführt, um symboische Links aufzulösen. Welche Nebenwirkungen das unter Umständen hätte, kann ich nicht abschätzen.
- Sven Rautenberg