Umlaute automatisch ersetzen

S

StephanSch

Aktives Mitglied
Thread Starter
Dabei seit
24.07.2006
Beiträge
406
Reaktionspunkte
1
Ich habe eine index Datei, in der je nachdem welche Variable mitgeschickt wird unterschiedlicher content reingeladen wird. Damit die Umlaute korrekt dargestellt werden, sollen diese automatisch gesucht und entsprechend durch z.B. ü ersetzt werden. Das funktioniert im Grunde genommen auch. Nun möchte ich aber das sämtliche Dateien automatisch replaced werden.

<?php

$search = array("ä", "ö", "ü", "Ä", "Ö", "Ü", "ß");
$replace = array("&auml;", "&ouml;", "&uuml;", "&Auml;", "&Ouml;", "&Uuml;", "&szlig;");
$subject = switch ($_GET["load"]) {
case "rechtsanwaelte": include("includes/rechtsanwaelte.php");
break;
case "schwerpunkte": include("includes/schwerpunkte.php");
break;
case "downloads": include("includes/downloads.php");
break;
case "kontakt": include("includes/kontakt.php");
break;
case "impressum": include("includes/impressum.php");
break;
case "kohler": include("includes/kohler.php");
break;
case "fischer": include("includes/fischer.php");
break;
case "about": include("includes/about.php");
break;
default: include("includes/home.php");
break;
};
$output = str_replace($search, $replace, $subject);

echo $output;

?>

Dieses Script lädt die entsprechende Datei leider nicht in die subject Variable, kann mir da jdn helfen?
 
<?php

$search = array("ä", "ö", "ü", "Ä", "Ö", "Ü", "ß");
$replace = array("&auml;", "&ouml;", "&uuml;", "&Auml;", "&Ouml;", "&Uuml;", "&szlig;");
$subject = file_get_contents("includes/impressum.php");
$output = str_replace($search, $replace, $subject);

echo $output;

?>

So funktioniert es, ABER wie kann ich nun das Subject dynamisch laden?
 
Hi Stephan,

hier mal ein kleiner Trick. :)

Am Anfang der Datei startest Du Output Buffering:
Code:
<?php
   ob_start();
?>

Und am Ende der Datei liest Du den Buffer in eine Variable ein:
Code:
<?php
   $content=ob_get_contents();
   ob_end_clean();
?>
Zwischen diesen beiden Schnipseln ist alles erlaubt. Dass die Ausgabe gebuffert wird, bekommst Du garnicht mit. $content enthält dann den Inhalt der gesammten Seite und wartet darauf gefoltert zu werden. ;)

Code:
echo preg_replace(
         array(
            "/&(?![a-z0-9\#]{2,6};)/i",
            "/target=\"_blank\"/",
            "/ä/",
            "/Ä/",
            "/ö/",
            "/Ö/",
            "/ü/",
            "/Ü/",
            "/ß/"
         ),
         array(
            "&amp;",
            "onclick=\"window.open(this.href);return false;\"",
            "&auml;",
            "&Auml;",
            "&ouml;",
            "&Ouml;",
            "&uuml;",
            "&Uuml;",
            "&szlig;"
         ),
         $content);
Steht so ähnlich in all meinen Projekten und man hat ein paar Sorgen weniger.
 
k.a. warum du dir da so kompliziert machst...
warum setzt du nicht einfach die zeichenkodierung des webservers passend zu den dokumenten, dann musst du nicht ersetzen...

am besten wäre es, wenn du durchgehend mal auf utf-8 umstellst...
 
Das hab ich probiert mit UTF-8 aber das funktionierte leider, aus ka welchen Gründen nicht bei mir....

<?php

switch ($_GET["load"]) {
case "rechtsanwaelte": $file = "rechtsanwaelte";
break;
case "schwerpunkte": $file = "schwerpunkte";
break;
case "downloads": $file = "downloads";
break;
case "kontakt": $file = "kontakt";
break;
case "impressum": $file = "impressum";
break;
case "kohler": $file = "kohler";
break;
case "fischer": $file = "fischer";
break;
case "about": $file = "about";
break;
default: $file = "home";
break;
};

$search = array("ä", "ö", "ü", "Ä", "Ö", "Ü", "ß");
$replace = array("&auml;", "&ouml;", "&uuml;", "&Auml;", "&Ouml;", "&Uuml;", "&szlig;");
$subject = file_get_contents("includes/".$file.".php");
$output = str_replace($search, $replace, $subject);

echo $output;

?>

so funktioniert das Script...;-) Das Script ist doch so konform oder?
 
Zurück
Oben Unten