bepe: UTF-8 Formularfeld validierung

Beitrag lesen

hallo christian,

ausserdem scheint setlocale() bei mir nicht zu funktionieren.

Was heisst „nicht funktionieren“? Was gibt es zurück? Was sagt die
Error-Message?

weiss nicht, hab ich nicht so ausführlich debugged. ich habe setlocale(LC_ALL,'en_US') bzw. setlocale(LC_ALL,'de_DE') ausprobiert, mit jeweils einigen variationen in der schreibweise, bzw. zusätzliche encodings. allerdings habe ich mit setlocale(LC_ALL,0) immer die server-weite locale einstellung zurückbekommen.

mein ziel war rauszufinden ob es locale abhängig ist dass ein \w in einer regex auch wirklich alle zeichen dieser sprache als word-character erkennt. somit hätte en_US z.b. einen umlaut nicht als word-character erkennen dürfen. hat es aber (die server locale war auf de_DE gesetzt.)

weiters weiss ich nicht wie ratsam es ist, bei jedem aufruf der seite
die locale zu setzen.

Das ist völlig problemlos. Das macht das Forum hier auch, z. B. um die
Datum-Strings lokalisiert auszugeben.

ich wollte damit sagen, dass mir nicht ganz klar ist, wie sich das (ver-)setzen einer locale auf andere php prozesse/threads auswirkt. welchen context überschreibt setlocale() nun? die server locale? die prozess locale? die PHP-thread-weite locale? wie wirkt sich das aus wenn php als CGI bzw. apache modul konfiguriert ist?

z.b.: http://at2.php.net/setlocale -> kommentar vom: 27-Jul-2001

meine site würde z.b. beim aufruf einer seite im unterverzeichnis /de eine andere locale setzen als bei aufruf einer seite in /pl. ich denke dass dies ein ganz normales problem multilingualer seiten ist.

ich versuche diese 'locale-awareness' ein wenig dahingehend zu umschiffen, dass ich UTF-8 als zeichensatz verwende, und ansonsten intern für alles andere (z.b. datum, preise in DB, externe web services etc.)  ein fixes standard format verwende (z.b. '.' als komma, unix timstamps für datum) und das nur auf der präsentationsebene (template engine) für das jeweilige portal formatiere.

lass mir aber gern andere konzepte & strategien aufzeigen diesbezüglich.

lg bernhard