.de und .com wechseln

LeMarkus

Mitglied
Hallo, ich müsste einen Sprachenwechsler in eine Webseite einbauen. Dabei sollte lediglich auf Knopfdruck die Adresse von http://www.webseite.com in http://www.webseite.de wechseln. Die Webseite kann dabei entweder nur heissen
http://www.webseite.de
kann aber auch microseiten enthalten
microseite.webseite.de

Bei allen soll jeweils nur "de" in "com" umgewandelt werden. Ich habe bereits ein funktionierende Lösung, allerdings finde ich diese recht schlecht gelöst (da ich diese nur auf Microseiten abgestimmt habe, wenn es keine Microseite gibt funktioniert das nicht und ich müsste mir was Neues überlegen)
Code:
$parts = explode('.', $_SERVER['HTTP_HOST']);	
  	  	
	if($parts[2] == "de") {
		echo '<a href="http://www.'.$parts[1].'.webseite.de">german</a>';
	} else {
		echo '<a href="http://www.'.$parts[1].'.webseite.com">Englisch</a>';
	}

Gibt es nicht einfach eine Funktion in php, die so funktioniert

> suche "de" bzw "com"
> ersetze mit gegensatz (de oder com)
 
[phpf]str_replace[/phpf]

Dazu einfach alles im Ausgabepuffer auffangen, [phpf]ob_start[/phpf], bearbeiten und dann wieder loslassen...

Elegant ist diese Methode aber nicht.
 
Vielen Dank, den Teil mit dem abfangen, ob_start() usw. verstehe ich beim besten Willen nicht. Das mit str_replace habe ich in mein Beispiel eingebaut. Da der link im Browser geändert werden soll, brauch ich ja einen <a>tag, deshalb verstehe ich nicht,was ich dann auffangen soll usw.
Laut meinem Verständnismuss ich ja zuerst die Domain prüfen (ob "de" oder "com") und dann entsprechend den Teil verändert und den a-tag ausgeben.

Code:
$parts = explode('.', $_SERVER['HTTP_HOST']);   
        
if($parts[2] == "de") {
	$link = str_replace("de", "com", $_SERVER['HTTP_HOST']);
	echo '<a href="'.$link.'">german</a>';
} else {
        $link = str_replace("com", "de", $_SERVER['HTTP_HOST']);
	echo '<a href="'.$link.'">english</a>';
}

Da du aber sagtest dies ist keine elegeante Methode, frage ich mich natürlich, was die eleganteste Methode wäre dies zu lösen.
 
Ich würde grundsätzlich eine Funktion basteln, die mir fertige Links ausgibt.

PHP:
function buildUrl($link, $language = 'de')
{
    $url = 'http://www.domain';
    if($language == 'de')
    {
        $url .= '.de/';
    }
    else
    {
        $url .= '.com/';
    }
    $url .= $link;

    return $url;
}

Ein Aufruf könnte dann so aussehen:
PHP:
echo buildUrl('unser-unternehmen.php');

Entsprechend für die englische Seite
PHP:
echo buildUrl('our-company.php', 'en');
 
Das würde natürlich auch funktionieren, aber ich habe vor je nach aktueller Endung (de oder com) automatisch die Endung zu wechseln. Die eigentliche Domain vornedran bleibt unberührt. Also wenn die aktuelle Seite mit .de endet soll der php Code automatisch einen a-tag erzeugen , der auf die gleiche Domain, allerdings mit .com Endung verlinkt.

Also im Prinzip wie mein Beispiel oben, nur leider weiß ich nciht, ob man das noch schöner und effizienter haben kann.

EDIT: habe es jetzt noch ein wenig verändert
$
Code:
pos = strpos($_SERVER['HTTP_HOST'], "de");  	
        
	if($pos === false) {
		 $link = str_replace("com", "de", $_SERVER['HTTP_HOST']);
    	echo '<a href=http://'.$link.'>english</a>';
	} else {   	
    	
    	$link = str_replace("de", "com", $_SERVER['HTTP_HOST']);
    	echo '<a href=http://'.$link.'>german</a>';
	}
ist es so besser nun?

EDIT: Obwohl nun alles klappte, muss ich es nun in Javascript lösen, da ich mit php nicht alle Dinge wie gewünscht umsetzen kann. Trotzdem vielen Dank
 
Zuletzt bearbeitet:
Zurück