yellowSky: Internationale Umlaute in normale Buchstaben umwandeln

Hi,

Habe das Problem, dass ich in PHP alle Umlaute (also ä,ö,ü, usw, aber auch Ø, ñ, å usw) eines Strings in entsprechende "normale" zeichen umwandeln muss.

Also aus ä wird ae, aus Ø wird O, aus ñ wird n, usw.

Das ganze brauche ich in meinem Content Management System, welches die Möglichkeit bietet, den dynamischen Seiten "virtuelle Pfade" zu zuordnen.
Über das Backend (Admin-Oberfläche) kann der virtuelle Pfad dieser Datei eingegeben werden. Und wenn man dies nicht manuell macht, übernimmt das System den Namen der Seite als Pfad. Da dieser nachher die URL wird, sollte der string schon http://www.w3.org/Addressing/URL/5_URI_BNF.html entsprechen.

Bis jetzt mache ich das so (es werden sonderzeichen, umlaute einfach rausgefiltert):
$dir = str_replace("&", " and ", $dir); #& im namen ist ok, in der URL nicht!
$dir = ereg_replace("[ \t\n\r]+","_",$dir); # alle whitespaces raus
$dir = ereg_replace("[^a-zA-Z0-9-\_@.&!\*(),]","",$dir); #alles auser "lieben" zeichen raus!
$dir = str_replace("\","",$dir); # wir wollen die browser ja nicht mit backslashes überfordern ;-)

Natürlich könnte ich jetzt einfach die Umlaute mit einem replace-befehl ersetzen, ich denke aber, dass es da eine elegantere variante gibt. Z.B. gibt es in den ASCII-codes ein System, dass z.B. Umlaute seinem "Träger" zuordnen lässt (also eine mathematische berechnung)?

Bin für jede Idee dankbar!

Gruss,

Patrick

  1. Hi,

    Natürlich könnte ich jetzt einfach die Umlaute mit einem replace-befehl ersetzen, ich denke aber, dass es da eine elegantere variante gibt. Z.B. gibt es in den ASCII-codes ein System, dass z.B. Umlaute seinem "Träger" zuordnen lässt (also eine mathematische berechnung)?

    es existiert kein berechenbarer Zusammenhang zwischen "ñ" und "n". Für Dich mögen die Zeichen ähnlich aussehen, für eine Maschine sind sie aber so unterschiedlich wie "X" und "U".

    PHP ermöglicht es, bei der Ersetzung zwei Arrays anzugeben, in denen einerseits die "von"-Zeichen und andererseits die "nach"-Zeichen stehen.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes