phpbar.de logo

Mailinglisten-Archive

[php] $_SERVER['PHP_SELF']

[php] $_SERVER['PHP_SELF']

Florian Mang php at slicka.de
Mon Mai 16 22:59:23 CEST 2005


Hallo Ringo,
Ringo Großer wrote:

>hallo Florian,
>
>  
>
>
>
>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
>  
>
Danke für deine Hilfe. Ich habe das nun mal so eingefügt und es 
funktioniert schon halb :)
also er tauscht nun die Länderkürzel aus, jedoch lässt er den Slash weg. 
Das liegt bestimmt an dem explode, wie kann ich das denn noch ändern?

mein link sieht nun folgendermaße aus:
   
            echo "<a href=".$newUrlen.">

und ergibt http://www.meineseite.de/enunterseiteindex.php
sollte jedoch http://www.meineseite.de/en/unterseite/index.php ergeben.

Gruß Florian



php::bar PHP Wiki   -   Listenarchive