Warum liefert dieser Regex bei Umlauten einen um jeweils ein Zeichen verschobenen Offset? Den Unicode-Modifier habe ich im Pattern.
PHP
function showWords() {
echo "Treffer; Start; Länge<br />";
$pattern = "~\b\w+\b~u";
$text = "Kathe wurde gerne wahlen.";
if (preg_match_all($pattern, $text, $matches, PREG_OFFSET_CAPTURE)) {
foreach ($matches[0] as $m) {
echo $m[0]."; ".$m[1]."; ".mb_strlen($m[0], "utf-8")."<br />";
}
}
}
Treffer; Start; Länge
Käthe; 0; 5
würde; 7; 5
gerne; 14; 5
wählen; 20; 6
Treffer; Start; Länge
Kathe; 0; 5
wurde; 6; 5
gerne; 12; 5
wahlen; 18; 6