|
|||
Suche PHP Funktion die URL Fähige Strings aus utf8 strings erzeugt
Hi,
ich suche eine PHP Stringfunktion die UTF8 Strings Umwandelt in URL "Fähige" Strings. Konkret nutze ich UTF8 Strings aus einer Datenbank um sie in als Teile von urls zu benutzen (die ich dann mittels rewrite Methoden auf dynamisch erstellte Dokumente weiterleite). Mein Problem sind eigentlich zwei Probleme: 1. Kann ich die UTF8 Strings nicht unmanipuliert als url Bestandteile nutzen weil dort Sonderzeichen enthalten sind die die meisten Browser nicht unterstützen in urls, von Serverseitigen Problemen mal abgesehen. Deshalb brauche ich zunächst eine Umwandlung. Die Umwandlung soll allerdings etwas spezifischer sein was mich zu meinem zweiten Problem führt: 2. Da diese generierten URLs unter anderen den Zweck erfüllen sollen das sie den Webseitenbesuchern als Erkennungs- oder Erinnerungshilfe dienen sollen, sollten die nicht unterstützten Zeichen natürlich nicht einfach beliebige Zeichen umgewandelt werden, ich hätte z.B. gerne: ä->ae oder wenn das nicht geht ä->a, aber auch zeichen wie: à, â, å usw. sollen in a und nicht in e oder so, ersetzt werden, weil damit für deutsche Besucher (und für die ist die Seite optimiert) noch eine gewisse Ähnlichkeit zu den originalen Zeichen erhalten bleibt. Meine bisherige Methode, die Strings durch eine schar str-replaces zu jagen macht in sofern Probleme das ich immer wieder überraschend auf neue Abwandlungen von Buchstaben stoße die ich vorher nicht kannte. Man glaubt es kaum wie viele Möglichkeiten es gibt a, e usw. mit Strichen, Punkten, etc zu versehen. Geändert von braindead (06.02.2009 um 19:57 Uhr) |
Sponsored Links |
Sponsored Links |
|
||||
Da es für so eine Umschreibung keine feste Norm gibt, die alle Fälle erfaßt, wirst du um eine manuell gepflegte Liste nicht herumkommen.
Ein str_replace() genügt: Die Funktion akzeptiert auch Arrays als Parameter.
__________________
toscho.de |
|
|||
Zitat:
|
|
||||
Es sind eben nur ähnliche Zeichen und manche Zeichen können gar nicht überführt werden, was zu einer Fehlermeldung führt. Um das zu vermeiden, solltest du noch zusätzlich ein //IGNORE anfügen, also ASCII//TRANSLIT//IGNORE.
__________________
Markus Wulftange |
|
|||
Ok danke, ich werde mal ein paar Tests durchführen, und zur Not den String vorher schonmal mit str_replace überarbeiten (insbesondere um die deutschen Umlaute durch Doppelbuchstaben zu ersetzen) und den string erst danach mit iconv behandeln (um nicht berücksichtigte Sonderzeichen noch abfangen zu können)
|
|
|||
Hmm es scheint so als würde iconv bei angabe von //IGNORE die oben genannten Variationen von a (inklusive des deutchen ä) nicht ignorieren sondern durch ? ersetzen. Ich denke nicht das es an meiner Darstellung liegt, denn die Seite wird als utf8 dokument geliefert und angezeigt und die utf8 Zeichen (die Variationen von a) werden korrekt angezeigt, nur der auch ausgegebene iconv behandelte String enthält nur "?". Soll das so sein oder kann das doch ein Darstellungsfehler sein?
EDIT: ich lese gerade das mein Problem irgentwie mit setlocale zusammenhängt. Keine Ahnung ob ich darauf Einfluss habe, mal schauen was das überhaupt ist |
|
||||
Dann liegen die Daten wohl nicht in UTF-8 vor. Schau mal, was Folgedes ausgibt:
PHP-Code:
__________________
Markus Wulftange |
Sponsored Links |
|
|||
Das wäre ein Möglichkeit wenn ich mit iconv oder str_replace nicht auskomme. Mich stört hier nur die Umwandlung in %hexwert, ich empfinde das als wenig Ästetisch (inwieweit sowas überhaupt ein Rolle spielen sollte, ist ein anderes Thema ). Zumindest merke ich gerade das mir iconv wohl ausscheidet, denn ich wage es nicht mit setlocale herumzuspielen. Dann werde ich wohl bei str_replace bleiben müssen.
|
Sponsored Links |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Float-Reihenfolge? | wolf1985 | CSS | 0 | 21.08.2008 02:35 |
Footer left und right Probleme... | wolf1985 | CSS | 2 | 14.08.2008 14:04 |
Dateien auslagern - Include und PHP | ArcVieh | Serveradministration und serverseitige Scripte | 17 | 27.03.2008 19:09 |
Problem mit Layout .. vermute: float | Küspert | CSS | 3 | 09.12.2006 18:09 |
Bilder werden überlagert und verschoben. | Küspert | CSS | 5 | 07.12.2006 18:15 |