Hallo Frank,
1.) Ich will wissen, wieviele Ordner ich nach oben gehen muss, um zu einer anderen Datei zu gelangen.
unter Windows gibt es die von Dir gesuchte Information nicht unbedingt.
Beispiel:
Datei1: C:\test\ordner\unterordner\abc.php
Datei2: D:\test\xyz.htm
Es gibt keinen relativen Pfad von Datei1 zu Datei2 :-)
Beispiel: meine Datei liegt in C:\test\ordner\unterordner\ und heißt abc.php. Im Ordner C:\test liegt jetzt die gesuchte Datei xyz.htm. Dann würde ich gerne die Information zurückbekommen, dass ich zwei Ordner nach oben gehen muss, wenn ich zu der Datei gelangen will. Verschiebe ich jetzt eine der beiden Dateien, dann soll sich das Ergebnis natürlich auch ändern.
Hat jemand so etwas schon mal gemacht oder kann mir Tipps geben, wie ich das implementieren kann?
a) Bestimmung des Pfades Deiner PHP-Datei
Hier kann Dir die magische Konstante FILE helfen. Weitere Hilfmittel stellt Dir PHP mit Funktionen wie realpath() und dirname() zur Verfügung.
b) Ermittle die Position der zweiten Datei
Dazu bleibt Dir nichts anderes übrig, als das komplette Dateisystem des Rechners nach dieser Datei zu durchsuchen, wenn Du nicht weißt, wo diese Datei liegt. Grundsätzlich kannst Du dazu was in den Funktionen des Dateisystems finden. Wäre es noch zusätzlich erlaubt, die Datei umzubenennen, dann ist Deine Aufgabe unlösbar, wenn Du nicht andere Kriterien kennst, mittels der Du die gesuchte Datei eindeutig identifizieren kannst.
c) Wenn die Dateien auf dem gleichen Laufwerk liegen, so ist Deine Aufgabe lösbar. Schreibe Dir dazu eine Funktion, der Du zwei Pfadangaben übergibst und die den relativen Pfad von Pfad1 zu Pfad2 zurückliefert.
Beispiel:
Datei1: D:\test\ordner1\uo2\datei1
Datei2: D:\test\ordner2\datei2
Pfad von Datei1 zu Datei2: ....\ordner2\datei2
Pfad von Datei2 zu Datei1: ..\ordner1\uo2\datei1
Noch ein Beispiel (s.o.)
Datei1: C:\test\ordner\unterordner\abc.php
Datei2: D:\test\xyz.htm
Rückgabe: false :-)
Ich persönlich würde der Funktion allerdings nur Verzeichnispfade übergeben.
Freundliche Grüße
Vinzenz