Suche nach als

SERVER und Pfade

Auf dieser Seite:

Wie finde und extrahiere ich den Pfad, den Ordnernamen oder den Dateinamen, oder die Dateiendung eines Scripts.

Superglobale Variable SERVER

$_SERVER[]

basename()

dirname()

Superglobals sind vordefinierte Variablen bzw. Arrays, die wie die Konstanten auch aus jeder Funktion heraus verfügbar sind. $_SERVER[] beinhaltet verschiedene assoziative Indizes, um einzelne Pfadbestandteile separat anzusprechen:

<?php
echo $_SERVER['SCRIPT_FILENAME'];
echo 
$_SERVER['DOCUMENT_ROOT'];
echo 
$_SERVER['PHP_SELF'];
echo 
$_SERVER['SCRIPT_NAME'];

echo 
basename(dirname($_SERVER['PHP_SELF']),'/'); // Parameter 2 ist der Backslash
echo basename($_SERVER['PHP_SELF'],'.php'); // Parameter 2 ist die Extension
?>
/home/bieferc/www/lehrling/php/pfade.php 'SCRIPT_FILENAME' ist der Root-Pfad bis und mit Dateinamen.
/home/bieferc/www/lehrling 'DOCUMENT_ROOT' ist der Root-Pfad des Servers.
/php/pfade.php 'PHP_SELF' ist der Pfad und Dateiname ab dem Server.
/php/pfade.php 'SCRIPT_NAME' ist der Pfad und Dateiname ab dem Server.

php ist der Ordnername
pfade ist der Dadeiname ohne Endung .php

Durch basename() konnte ich den Dateinamen heraus lesen, durch dirname() den Ordnernamen.
Beide Funktionen basename() und dirname() funktionieren nur mit dem vollständigen Pfad als Parameter!
Beide erlauben mittels eines zweiten Parameters (innerhalb der Klammer, nach einem Komma) das Eliminieren der Endung; bei basename die Dateiendung, bei dirname den Slash.

Pfad Info Array

pathinfo()

Um die Dateiendung zu löschen, ohne dass ich sie kenne, bediene ich mich folgenden Codes:

$file = $_SERVER['PHP_SELF'];
$info = pathinfo($file);
$fkk  = basename($file,'.'.$info['extension']);
echo    $fkk;
pfade

pathinfo() retourniert also ein assoziatives Array mit Pfadinfos.

$pfadarray = pathinfo('http//www.lehrling/biefer.com/php/pfade.php');
echo "dirname: ".$pfadarray['dirname'], "\n";
echo  "basename: ".$pfadarray['basename'], "\n";
echo "extension: ".$pfadarray['extension'], "\n";
echo "filename: ".$pfadarray['filename'], "\n"; // seit PHP 5.2.0
dirname: http//www.lehrling/biefer.com/php
basename: pfade.php
extension: php
filename: pfade

Ein weiterer Weg den Pfad zu eruieren sind die Magischen Konstanten wie __FILE__.

Relative Pfadangaben kanonisieren

realpath()

realpath() ersetzt die symbolischen oder relativen Pfadangaben wie . oder / oder ./ und ../ durch den absoluten Pfadnamen. Wenn der Funktion kein Pfad angegeben wird, dann gibt sie den aktuellen Pfad zurück, bei einem falschen Pfad gibt sie FALSE zurück.

echo "1. ".  realpath('');    // leer
echo "2. ".  realpath('.');   // Punkt              = aktueller Ordner
echo "3. ".  realpath('./');  // Punkt Slash        = auch aktueller Ordner
echo "4. ".  realpath('/');   // Slash              = Root (Wurzelverzeichnis)
echo "5. ".  realpath('../'); // Punkt Punkt Slash  = der Ordner über dem aktuellen Ordner
1. /home/bieferc/www/lehrling/php
2. /home/bieferc/www/lehrling/php
3. /home/bieferc/www/lehrling/php
4. /
5. /home/bieferc/www/lehrling

Zur Erklärung von relativen bzw. absoluten Pfaden siehe im Teil HTML Links.

Pfad auseinander nehmen

parse_url()

parse_url() analysiert eine URL mit Query-String und allerlei für Sachen drin und zelregt sie in einen Array. Ich kann durch einen Parameter z.B. den Pfad als String ausgeben lassen.

$url = 'http://benutzername:passwort@hostname/www.lehrling.biefer.com/index.php?variable=wert#textanker';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
Array
(
    [scheme] => http
    [host] => hostname
    [user] => benutzername
    [pass] => passwort
    [path] => /www.lehrling.biefer.com/index.php
    [query] => variable=wert
    [fragment] => textanker
)
/www.lehrling.biefer.com/index.php

Pfad zusammenfügen

http_build_url()

http_build_url() fügt einen Array zu einer URL zusammen. Erledigt das Gegenteil von parse_url().

 


Valid XHTML 1.0 Check den Code.

Verzeichnis Baum >> << Ordnerfunktionen
Ich bin hier: > PHP Lehrling >>> SERVER und Pfade
 
HTML und XHTML | CSS | JavaScript und DHTML | PHP und MySQL | Andere Sprachen
Letzter Update: 19.10.2010