phpbar.de logo

Mailinglisten-Archive

[php] $_SERVER['PHP_SELF']

[php] $_SERVER['PHP_SELF']

Ringo Gro�er swek at gmx.net
Mon Mai 16 20:26:02 CEST 2005


hallo Florian,

Florian Mang wrote:
> Kannst du mir das auch ein bisschen genauer und anf�ngerfreundlich
> erkl�ren? oder hast du nen link dazu oder ein beispiel?

Schau dir zuerst http://de3.php.net/manual/de/function.explode.php an.
Als trennzeichen legst du sinnvollerweise das "/" fest und erh�lst als
Ergebnis aus dem explode ein numeriertes Array mit allen enthaltenen
Teilen der URL, die zwischen den Slashes gefunden wurden.

Durch ein unbestimmt gro�es Array l�ufst du mit
foreach ( $array as $key => $value ) {
}
durch.

Ein Array betrachten kannst du am besten mit

echo '<pre>';
print_r($array);
echo '</pre>';

Die Keys (Schl�ssel) enthalten dann die Position im Array, also auch
die Position in der URL.
Lass dir in der foreach-Schleife mal mit echo die $key und $value
zeilenweise
ausgeben und schau, an welcher Stelle du die Sprachinformation findest.
F�r diesen Key setzt du dann eine if-Bedingung ein.

$urlParts = explode('/', $_SERVER['PHP_SELF']);
$newUrl = 'http://'.$_SERVER['HTTP_HOST'].'/';
foreach ( $urlParts as $k => $part ) {
    if ( 1 == $k ) // dies w�re die Position der Sprache
    {
        $newUrl .= 'en';
    }
    else // ansonsten die Teile der Reihe nach wieder anh�ngen
    {
        $newUrl .= $part;
    }

    // und nach jedem Teil immer einen Slash anf�gen, solange es sich nicht
    // um den letzten Schl�ssel im Array handelt, weil dieser Teil
wahrscheinlich
    // auf .html oder .php endet
    if ( $k < (count($array)-1) )
    {
        $newUrl .= '/';
    }

}

Das Ganze m�sstes du ggf. f�r alle Sprachen wiederholen, weil je Sprache
eine neue URL zusammengebaut werden muss. Also am besten noch eine
Schleife drumherum f�r jede Sprache foreach ( $languages as $k => $v ).

Siehe Niels' Vorschlag kannst du das Ganze auch noch sch�n �bersichtlich
in functions zerlegen.

hth, Ringo


php::bar PHP Wiki   -   Listenarchive