Mike: Systempfad wie lokaler Pfad

Hallo,

es gibt viele Funktionen und Konstanten, die eine Pfadangabe zum Ziel haben. Nun möchte ich mal aus Experimentierfreude einen Systempfad(weiß nicht ob man das so nennen sollte) als Pfadangabe haben, wie ich ihn auch selbst angeben würde.

Beispiel:

http://domain.xy/dir1/dir2/dir3/dir4/test.php

In dir2 liegt eine Datei die eine Datei aus dir4 includet. wird mir das aktuelle Verzeichnis anzeigen soll. Enthält die Datei in dir4 jetzt den Aufruf __DIR__ zeigt mir die Datei in dir2 den Pfad zum Verzeichnis dir4. Das ist soweit OK, allerdings:

Dabei entsteht dann sowas wie: "F:\server\docs\dir1\dir2\dir3\dir4" auf Windowssystemen oder mit normalem Slash auf anderen.

Ich hätte aber gerne: "dir3/dir4"

Trotz der vielen Funktionen und Konstanten habe ich nichts passendes gefunden und mir etwas gebastelt, was zwar funktioniert, aber ich frage mich ob das nicht einfacher oder besser geht?

str_replace(dirname($_SERVER['PHP_SELF']).'/','',strstr(str_replace('\\','/',__DIR__),dirname($_SERVER['PHP_SELF'])));

Gruss
Mike

  1. Hi,

    es gibt viele Funktionen und Konstanten, die eine Pfadangabe zum Ziel haben. Nun möchte ich mal aus Experimentierfreude einen Systempfad(weiß nicht ob man das so nennen sollte) als Pfadangabe haben, wie ich ihn auch selbst angeben würde.
    [umständliche Erklärung]
    Ich hätte aber gerne: "dir3/dir4"

    also ich hätte dann gern wenigstens "./dir3/dir4", nur der Ordnung halber.
    Mit anderen Worten: Du möchtest einen relativen Pfad, ausgehend von einem gegebenen Verzeichnis.

    Da wirst du aber vermutlich wirklich selbst basteln müssen. Denn man darf zwar fast überall Pfadangaben relativ notieren, aber das Betriebssystem normalisiert sie intern automatisch. Sobald man also irgendeinen Pfad wieder abfragt, bekommt man ihn in der Regel vollständig.

    Ciao,
     Martin

    --
    F: Was ist schlimmer: Alzheimer oder Parkinson?
    A: Parkinson. Lieber mal ein Bier vergessen zu zahlen, als eins verschütten.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    1. Meine Herren!

      Da wirst du aber vermutlich wirklich selbst basteln müssen.

      In den Kommentaren zu realpath im PHP-Handbuch findet sich auch eine Lösung, hab sie mir jetzt aber nicht näher angesehen.

      --
      “All right, then, I'll go to hell.”