Forum Doku Wiki Blog

Forumsarchiv 2002, April
Absoluter Pfad des relativen Links

archivierte Beiträge lesen

  1. (PHP) Absoluter Pfad des relativen Links von Saadat, 02. 04. 2002, 22:42

Absoluter Pfad des relativen Links

Der folgende Beitrag wurde am 02. 04. 2002, 22:42 Uhr von Saadat veröffentlicht.

Hallo Allerseits,

wie kann ich mittels PHP den absoluten Pfad eines relativen Links ausgehend vom absoluten Pfad der Datei, in der dieser Link steht, zurückgeben.

Der absolute Pfad der HTML-Datei lautet zum Beispiel:
"D:\www\mypage\referenz\index.html"

Und der in dieser Datei stehende Link lautet:
"../profil/index.html"

Welcher Befehl gibt den absoluten Pfad dieser innerhalb des Links definierten Datei zurück. Der Befehl "realpath();" geht anscheinend immer vom Pfad des PHP-Scripts aus, in dem der Befehl drin steht.

Danke im Voraus!

Gruß

Saadat

Absoluter Pfad des relativen Links

Der folgende Beitrag wurde am 03. 04. 2002, 10:39 Uhr von lulu veröffentlicht.

Huhu Saadat

das sollte klappen wenn Du dir den aktuellen Pfad besorgst.

Z.B.
$rel_link='../mydir/index.html';
$this_dir=dirname($PHP_SELF);

dann den rel-Link anhängst und das dann mit realpath auswertest.

$path=realpath($this_dir.$rel_link);

Viele Grüße

lulu

Absoluter Pfad des relativen Links

Der folgende Beitrag wurde am 03. 04. 2002, 23:23 Uhr von Michael Schröpl veröffentlicht.

Hi,

> wie kann ich mittels PHP den absoluten Pfad eines relativen
> Links ausgehend vom absoluten Pfad der Datei, in der dieser
> Link steht, zurückgeben.

im Allgemeinen - überhaupt nicht.

Gängige Webserver sind in der Lage, beliebig konfigurierbare Abbildungen zwischen URLs und Pfaden vorzunehmen.

Du müßtest also deren Konfiguration komplett einlesen - und verstehen ...

Viele Grüße
      Michael

Absoluter Pfad des relativen Links

Der folgende Beitrag wurde am 04. 04. 2002, 00:05 Uhr von Henryk Plötz veröffentlicht.

Moin,

> im Allgemeinen - überhaupt nicht.

Hat der OP gesagt, dass er von URL-Pfaden ausgehend die darunterliegenden Dateisystempfade haben will? Ich glaube nicht, es dürfte ihm ausreichen innerhalb der URL-Pfade zu bleiben.

realpath() ist je nach Verwendungszweck leider manchmal nicht brauchbar da es nur auf existierenden Verzeichnissen arbeiten kann. Ich habe daher für ein eigenes Projekt eine Funktion geschrieben die etwas ähnliches macht:

function dir_concat($dir1, $dir2)
{
 if(substr($dir1, -1) == "/") $dir = $dir1.$dir2;  // Die beiden Namen verknüpfen
 else $dir = dirname($dir1)."/".$dir2;
 $parts = preg_split("!/!", $dir); // In einzelne Pfadbestandteile aufteilen
 $newparts = Array(); // Hier kommen die neuen Bestandteile rein
 foreach($parts as $part) {
  if($part == "" || $part == ".") { // leere Teile und . ignorieren
   continue;
  } else if($part == "..") { // Eine Ebene nach oben
   if(count($newparts) > 0) array_pop($newparts);
   else die("Zu viele Rückreferenzen");
  } else array_push($newparts, $part); // Diesen Bestandteil merken
 }
 $newdir = implode("/", $newparts); // Neuen Namen bilden
 if($dir[0] == "/") $newdir = "/".$newdir; // Wenn $dir mit einem / angefangen hat, dann wäre der jetzt weg
 if(substr($dir, -1) == "/") $newdir .= "/"; // dito fürs Ende
 return $newdir;
}

Du schmeisst der Funktion den ersten und den zweiten Namen an den Kopf und es gibt dir die Verbindung der beiden zurück und entfernt nebenbei alle ../ Rückreferenzen.

--
Henryk Plötz
Grüße von der Ostsee

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4