Ergebnis 1 bis 6 von 6
  1. #1
    Granny Smith
    Themenstarter

    Registriert
    04.2010
    Ort
    Rheinland-Pfalz
    Beiträge
    14

    Ändern der URL per PHP?!

    Hallo ich hoffe ihr könnt mir helfen.
    Ich habe als Projekt ein Wiki System aufgegeben bekommen und bin soweit auch durch. Lediglich der Sprachwechsel fehlt noch.

    Ziel ist es per Klick auf ein Icon (Flagge z.B.) einen Sprachwechsel durchzuführen. Das Ganze ist sehr einfach gehalten, denn auf dem Apache laufen 2 verschiedene Versionen wo die Sprache schon verstellt ist. Das heißt das PHP Skript muss im Prinzip nur einen Teil der URL tauschen:

    Aussehen müsste es dann so:

    ../wiki/deu/beispielthema/aritkel1

    ../wiki/enu/beispielthema/artikel1

    Ich hoffe es ist ersichtlich was ich vorhabe. Große PHP-Kenntnisse habe ich leider noch keine.

    Vielen Dank im Voraus!
    Just love the world that won't love you back

  2. #2
    Cripps Pink
    Registriert
    01.2010
    Beiträge
    153
    Mir ist zwar nicht klar, warum du jetzt ein eigenes Wiki entwickelt hast.. aber nun denn: Du nutzt eine Regex in deiner .htaccess, die die entsprechenden Parameter an dein PHP-Script weiterreicht. Sowas ähnliches hast du doch eh schon für den "Rest" gemacht, wo ist da der Unterschied bei der Sprachauswahl?

  3. #3
    Granny Smith
    Themenstarter

    Registriert
    04.2010
    Ort
    Rheinland-Pfalz
    Beiträge
    14
    Nein habe ich noch nicht gemacht. Wie genau würde das denn aussehen? Danke!
    Just love the world that won't love you back

  4. #4
    Idared
    Registriert
    02.2007
    Beiträge
    24
    Mir ist zwar nicht klar, warum du jetzt ein eigenes Wiki entwickelt hast.. aber nun denn: Du nutzt eine Regex in deiner .htaccess, die die entsprechenden Parameter an dein PHP-Script weiterreicht. Sowas ähnliches hast du doch eh schon für den "Rest" gemacht, wo ist da der Unterschied bei der Sprachauswahl?
    Na, er will doch nur zwischen zwei Ordnern switchen. Dann reicht auch sowas:

    In die deutsche Version einsetzen:
    Code:
    <?
    $link = str_replace("/wiki/deu/","/wiki/enu/",$_SERVER['PHP_SELF']);
    echo '<a href="'.$link.'">zur englischen Version</a>';
    ?>
    In die englische Version einsetzen:
    Code:
    <?
    $link = str_replace("/wiki/enu/","/wiki/deu/",$_SERVER['PHP_SELF']);
    echo '<a href="'.$link.'">zur deutschen Version</a>';
    ?>

  5. #5
    Cripps Pink
    Registriert
    01.2010
    Beiträge
    153
    Achso. Das habe ich falsch verstanden.

    Das Suchen und Ersetzen kann aber bei URLs schieflaufen, falls die im Titel oder weiteren Pfad genau diese Kombination haben. Um das Thema komplett auszuschließen, komme ich wieder mit den regulären Ausdrücken.

    Code:
    <?
    
    /** Returns link with specified language. */
    function changeLanguage($link, $language) {
    	$pattern = "/(\/wiki\/)([a-z]+)(\/.*)/";
    	// mit $pattern = "/^(\/wiki\/)([a-z]+)(\/.*)/"; werden keine absoluten Links mit http und Domain erlaubt.
    	return preg_replace($pattern, sprintf('$1%s$3', $language), $link);
    }
    
    $link1a = '/wiki/deu/MeineSeiteMitTitel/wiki/deu/s';
    $link2a = 'http://example.net/wiki/deu/MeineSeiteMitTitel/wiki/eng/s';
    
    $link1b = changeLanguage($link1a, 'eng');
    $link2b = changeLanguage($link2a, 'eng');
    
    echo "Link1 (vorher): " . $link1a . "\n";
    echo "Link1 (nachher): " . $link1b . "\n";
    echo "Link2 (vorher): " . $link2a . "\n";
    echo "Link2 (nachher): " . $link2b . "\n";
    ?>
    Code:
    PhpMate r11069 running PHP 5.3.3 (cli) (/usr/bin/php)
    >>> t.php
    
    Link1 (vorher): /wiki/deu/MeineSeiteMitTitel/wiki/deu/s
    Link1 (nachher): /wiki/eng/MeineSeiteMitTitel/wiki/deu/s
    Link2 (vorher): http://example.net/wiki/deu/MeineSeiteMitTitel/wiki/eng/s
    Link2 (nachher): http://example.net/wiki/eng/MeineSeiteMitTitel/wiki/eng/s

  6. #6
    Idared
    Registriert
    02.2007
    Beiträge
    24
    Das Suchen und Ersetzen kann aber bei URLs schieflaufen, falls die im Titel oder weiteren Pfad genau diese Kombination haben. Um das Thema komplett auszuschließen, komme ich wieder mit den regulären Ausdrücken.
    Hmm, ja stimmt. Mein Beispiel klappt zuverlässig, wenn der Aufbau denn tatsächlich so ist:

    http://www.domain.xy/wiki/deu/...
    http://www.domain.xy/wiki/eng/...

    Dann kann man die komplette URL bis "/eng/" bzw. "/deu/" ersetzen.
    Oder nur beim zum ersten Vorkommen von "/eng/" , "/deu/" ersetzen, das wäre sogar noch besser.

    Du siehst, ich mag keine regulären Ausdrücke - aber manchmal gehts auch nicht ohne.
    Sei es drum, Broken Vow hats vermutlich eh schon irgendwie gelöst...

    Grüße,
    Skagen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •