\b är ju smidigt i reguljära uttryck när man vill matcha hela ord (t ex: /\bord\b/). Tyvärr funkar det inte alltid så bra med annat än engelska ord (\w) bestående av [a-zA-Z0-9]. Ord som innehåller svenska tecken delas upp felaktigt, t ex "innehåller", som blir "\binneh\bå\bller". Detta ställer till det en del för mig både i PHP och JavaScript, och jag undrar om någon annan har smidiga lösningar?
Exempelkod (JavaScript eftersom det är vad jag håller på med just nu, men jag får motsvarande i PHP):
Kod:
"de det de öde både ödem <b>öde</b> <b>de</b> öde".replace(/\bde\b/gi, '--')
Resultat: "-- det -- ö-- bå-- ödem <b>ö--</b> <b>--</b> ö--"
Önskat resultat: "-- det -- öde både ödem <b>öde</b> <b>--</b> öde"
Är det någon som har smidiga förslag på sätt att ställa in vad \b (och \w) ska matcha i PHP samt JavaScript? De workarounds jag använt inkluderar dels att splitta strängen vid " " men det känns lite klumpigt i jämförelse med ett enkelt \b, och löser inte heller allt (t ex missar man ju ord som avslutas med punkt eller en HTML-tagg).