Preg_Replace et UTF8

Je suis à l'amélioration de nos vidéo page de recherche pour mettre en surbrillance la recherche terme(s) dans les résultats. Parce que l'utilisateur peut entrer judas priest et une vidéo a Judas Priest dans son texte, je dois utiliser des expressions régulières pour préserver la casse du texte original.

Mon code fonctionne, mais j'ai des problèmes avec les caractères spéciaux comme š, č and ž, il semble que Preg_Replace() ne correspondent si le cas est le même (malgré le /ui modificateur).
Mon code:

$Content = Preg_Replace ( '/\b(' . $term . '?)\b/iu', '<span class="HighlightTerm">$1</span>', $Content );

J'ai aussi essayé ceci:

$Content = Mb_Eregi_Replace ( '\b(' . $term . '?)\b', '<span class="HighlightTerm">\</span>', $Content );

Mais il ne fonctionne pas. Elle correspond à "SREČA" si le terme de recherche est "SREČA", mais si le terme de recherche est "sreča" ce ne sera pas le match (et vice versa).

Alors, comment dois-je faire ce travail?

mise à jour: je vous définissez les paramètres régionaux et codage interne:

Mb_Internal_Encoding ( 'UTF-8' );
$loc = "UTF-8";
putenv("LANG=$loc");
$loc = setlocale(LC_ALL, $loc);
Avez-vous pensé à ce qui arriverait si l'utilisateur saisit un caractère spécial tel qu'un / ou * dans la requête de recherche?
Terme de recherche est désinfecté avant de me faire quelque chose avec elle. Merci pour le commentaire.
Au lieu de "désinfection", vous pouvez utiliser preg_quote
J'utilise celle-ci 🙂

OriginalL'auteur Jan Hančič | 2010-01-14