php regex wortgrenzeanpassung in utf-8

Habe ich folgenden php-code in einer utf-8-php-Datei:

var_dump(setlocale(LC_CTYPE, 'de_DE.utf8', 'German_Germany.utf-8', 'de_DE', 'german'));
var_dump(mb_internal_encoding());
var_dump(mb_internal_encoding('utf-8'));
var_dump(mb_internal_encoding());
var_dump(mb_regex_encoding());
var_dump(mb_regex_encoding('utf-8'));
var_dump(mb_regex_encoding());
var_dump(preg_replace('/\bweiß\b/iu', 'weiss', 'weißbier'));

Möchte ich die Letzte regex ersetzen, nur ganze Wörter und nicht Teile von Wörtern.

Auf meinem windows-computer, es gibt:

string 'German_Germany.1252' (length=19)
string 'ISO-8859-1' (length=10)
boolean true
string 'UTF-8' (length=5)
string 'EUC-JP' (length=6)
boolean true
string 'UTF-8' (length=5)
string 'weißbier' (length=9)

Auf dem webserver (linux), bekomme ich:

string(10) "de_DE.utf8"
string(10) "ISO-8859-1"
bool(true)
string(5) "UTF-8"
string(10) "ISO-8859-1"
bool(true)
string(5) "UTF-8"
string(9) "weissbier"

Damit der regex funktioniert, wie ich erwartete, auf windows aber nicht auf linux.

Also die wichtigste Frage ist, wie soll ich schreiben, dass meine regex nur match an Wortgrenzen?

Einer sekundären Fragen ist, wie kann ich lassen Sie windows wissen, dass ich möchte, um die Verwendung von utf-8 in meiner php-Anwendung.

InformationsquelleAutor tomsv | 2010-03-12
Schreibe einen Kommentar