Hallo Forum,
leider beherrscht mein Lieblingseditor das automatische Ersetzen der deutschen Umlaute durch die entsprechenden HTML-Codes nicht (also ä wird zu & auml; ).
Also habe ich mir kurzerhand eine kleine Routine geschrieben, die das erledigt.
Vom angegebenen Startverzeichnis aus werden rekursiv alle Unterverzeichnisse durchsucht, die Dateien eingelesen, Umlaute ersetzt und anschließend wird die Datei wieder abgespeichert.
So kann man bequem in einem größeren Projekt alle Umlaute nur durch den einmaligen Aufruf der Routine ersetzen. Außerdem kann man die Liste der Ersetzungen noch beliebig erweitern.
Vielleicht kann es ja noch jemand gebrauchen. Ich habe mir jetzt jedenfalls angewöhnt die Umlaute so zu schreiben, wie ich es im Deutschen nunmal kennen und lasse nach Fertigstellung des Projekts die Routine drüberlaufen.
Programmierer sind ja nunmal von Natur aus faul.
Viel Spaß damit.
Code:
<?php
/////////////////////////////////////////////////////////////////////////
// Diese Routine liest alle Dateien rekursiv vom Startverzeichnis ein und
// wandelt deutschen Umlaute in die entsprechenden HTML-Derivate
// in $durchsuchen können die Dateiendungen angegeben werden, bei denen
// die Aktion durchgeführt werden soll.
//
// Daniel Schlichtholz in 2006
// http://www.mysqldumper.de
/////////////////////////////////////////////////////////////////////////
function GetDirArray($sPath)
{
global $dir;
$handle=opendir($sPath);
while ($file = readdir($handle)) $retVal[count($retVal)] = $file;
closedir($handle);
sort($retVal);
while (list($key, $val) = each($retVal))
{
if ($val != "." && $val != "..")
{
$path = str_replace("//","/",$sPath.$val);
$dir[] = $path;
if (is_dir($sPath.$val)) GetDirArray($sPath.$val."/");
}
}
}
function replace($filename)
{
$datei=file_get_contents($filename);
$suchen=array('Ä','Ö','Ü','ä','ü','ö','ß');
$ersetzen=array('Ä','Ö','Ü','ä','ü','ö','ß');
$datei=str_replace($suchen,$ersetzen,$datei);
if (file_put_contents ($filename,$datei)) echo "<br>Datei <b>".$filename."</b> bearbeitet und neu geschrieben.";
else echo "<br><font color=\"red\">Fehler</font> beim Schreiben der Datei".$filename."!";
}
$startdir="./"; //mit Slash am Ende !
// In $durchsuchen müssen alle Dateiendungen angegeben werden, die das Script durchsuchen soll
$durchsuchen=ARRAY('php','php3','php4','php5','html','htm','xml');
GetDirArray($startdir); // holt alle Dateien in das Array $dir
for($i=0;$i<count($dir);$i++)
{
$teil=explode(".",$dir[$i]);
$letzter=sizeof($teil);
$endung=strtolower($teil[$letzter-1]);
if (in_array($endung,$durchsuchen)) replace($dir[$i]);
}
echo "<br>Fertig.";
?>
Es macht natürlich Sinn das Script in der Verzeichnisstruktur eine Ebene oberhalb des Projektordners zu platzieren und innerhalb den Pfad anzupassen. Sonst ersetzt es die Umlaute auch bei sich selbst und ein zweiter Lauf klappt dann nicht mehr.
