Nachtrag:
der von mir verwendete Befehl "file_put_contents" funktioniert erst ab PHP-Version 5.x .
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.
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.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."; ?>![]()
Geändert von DSB (11.07.2006 um 20:37 Uhr)
Nachtrag:
der von mir verwendete Befehl "file_put_contents" funktioniert erst ab PHP-Version 5.x .
das mag stimmenZitat von DSB
![]()
aber ich hoffe dir ist bewusst, dass die umlaute (natürlich bis auf das "ß" und andere sonderzeichen) sowohl im iso-8859-1 und natürlich auch im utf-8 zeichensatz komplett enthalten sind und nicht umgeschrieben werden müssen?!
nicht dass du jetzt hier das allgemeingültige bild des programmierers zunichte machst und dir doch zuviel arbeit gemacht hast...![]()
Klar, wenn der Editor nicht direkt UTF8-Dateien abspeichert kann man es so wandeln und schaden tut es unter ISO auch nicht.
Insofern siegt dann doch meine Faulheit.![]()
Geändert von DSB (15.07.2006 um 15:15 Uhr)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)