Mailinglisten-Archive |
Hi Thomas, Zitat von Thomas Langfeld <opa.thomas at fhtw-berlin.de>: > folgendes: > > Wir haben ein Skript: > /var/www/foo/bar/dummy.php > > Dann gibt es eine Datei unter: > /var/www/upload/fubar/file.doc > > Jetzt wird der RELATIVE Pfad von dummy.php zu file.doc benötigt. > > In diesem Fall ist das > ../../upload/fubar/file.doc > > Soweit kein Problem. > Nur kann dummy.php auch unter > > /var/www/foo/bar/XYZ/dummy.php > > liegen, womit der relative Pfad zu > > ../../../upload/fubar/file.doc > > wird. > > Jetzt benötige eine Vorgehensweise, um diesen relativen Pfad immer korrekt > zu ermitteln. > Stehe auf dem Schlauch, weil mir fällt dazu irgendwie nix ein. :-( ist das nicht ein klassischer Fall, wo sinnvollerweise ein ABSOLUTER Pfad verwendet werden sollte? ;-) Das Upload/Download-Verzeichnis scheint doch immer an derselben Stelle zu liegen. Dann musst Du nicht die ganzen Verrenkungen ausfuehren, um einen relativen Pfad zu ermitteln. Wenn Du aber drauf bestehst, gibt es mehrere Moeglichkeiten das zu tun. :-) Von der Logik her musst Du das "/var/www/" von Deinem physischen Pfad, z.B. /var/www/foo/bar/dummy.php, entfernen und dann alle verbleibenden "xyz/" durch ein "../" zu ersetzen. Z.B. so: $sDeinPfad = '/var/www/foo/bar/dummy.php'; $aPfadArray = explode ('/', $sDeinPfad); $iAnzahlElemente = count($aPfadArray); $iAnzahlRelVerz = AnzahlElemente - 3; $sDeinRelPfad = ''; for ($i=0; $i<$iAnzahlRelVerz; $i++) { $sDeinRelPfad .= '../'; } $sDeinRelPfad .= $aPfadArray[$iAnzahlElemente-1]; So in etwa. UNGETESTET! Eine andere Variante waere, mit str_replace() erst das "/var/www/" zu entfernen und dann mit regulaeren Ausdruecken alle uebrigen "xyz/" durch "../" zu ersetzen. Oder Du machst alles mit regulaeren Ausdruecken. ;-) Viele Gruesse Lutz
php::bar PHP Wiki - Listenarchive