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