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?
Ergebnis 1 bis 6 von 6
- 21.11.2010, 18:35 #1Granny 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
- 23.11.2010, 23:48 #2Cripps Pink
- Registriert
- 01.2010
- Beiträge
- 153
- 25.11.2010, 08:29 #3Granny 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
- 25.11.2010, 09:00 #4Idared
- Registriert
- 02.2007
- Beiträge
- 24
Na, er will doch nur zwischen zwei Ordnern switchen. Dann reicht auch sowas: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?
In die deutsche Version einsetzen:
In die englische Version einsetzen:Code:<? $link = str_replace("/wiki/deu/","/wiki/enu/",$_SERVER['PHP_SELF']); echo '<a href="'.$link.'">zur englischen Version</a>'; ?>
Code:<? $link = str_replace("/wiki/enu/","/wiki/deu/",$_SERVER['PHP_SELF']); echo '<a href="'.$link.'">zur deutschen Version</a>'; ?>
- 25.11.2010, 20:27 #5Cripps 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
- 25.11.2010, 21:23 #6Idared
- Registriert
- 02.2007
- Beiträge
- 24
Hmm, ja stimmt. Mein Beispiel klappt zuverlässig, wenn der Aufbau denn tatsächlich so ist: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.
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


Zitieren