phpbuddy.eu
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 19.05.2006, 11:23   #1
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Oyten
DSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's geht

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.
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank

Geändert von DSB (11.07.2006 um 20:37 Uhr).
DSB ist offline   Mit Zitat antworten


Alt 12.07.2006, 07:41   #2
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Oyten
DSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's geht
Nachtrag:
der von mir verwendete Befehl "file_put_contents" funktioniert erst ab PHP-Version 5.x .
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank
DSB ist offline   Mit Zitat antworten
Alt 15.07.2006, 15:04   #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...
  Mit Zitat antworten
Alt 15.07.2006, 15:13   #4
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Oyten
DSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's geht
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.
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank

Geändert von DSB (15.07.2006 um 15:15 Uhr).
DSB ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik > Traum-Scripts
Umlaute in Komplettprojekt ersetzen Umlaute in Komplettprojekt ersetzen
« PHP Access 1.01 | Mail-Skript »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:52 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67