Ergebnis 1 bis 4 von 4

Thema: Umlaute in Komplettprojekt ersetzen

  1. #1
    DSB
    DSB ist offline
    TP-Veteran Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137

    Umlaute in Komplettprojekt ersetzen

    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('&Auml;','&Ouml;','&Uuml;','&auml;','&uuml;','&ouml;','&szlig;');
    	$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.
    Geändert von DSB (11.07.2006 um 20:37 Uhr)
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

  2. #2
    DSB
    DSB ist offline
    TP-Veteran Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137
    Nachtrag:
    der von mir verwendete Befehl "file_put_contents" funktioniert erst ab PHP-Version 5.x .
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

  3. #3
    ingo
    Guest
    Zitat Zitat von DSB
    Programmierer sind ja nunmal von Natur aus faul.
    das mag stimmen
    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...

  4. #4
    DSB
    DSB ist offline
    TP-Veteran Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137
    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)
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51