Bonjour,
j'ai une fonction qui cherche une sous chaîne de caractères dans une chaîne et la remplace par son équivalent en gras (<strong>$sous_chaine</strong>) grâce à une regex. Le problème est que les accents ne sont pas conservés si la chaîne dans laquelle on effectue la recherche comporte des caractères accentués. J'obtiens une sorte de losanges avec des points d'interrogation à l'intérieur(��).
Quelqu'un pourrait-il m'aider? Merci d'avance
Voici ma fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 function highLight($words, $str) { $words = preg_split("/[\s,-]+/", $words); $highlight = '<strong>$0</strong>'; $pattern = '#(?!<.*?)(%s)(?![^<>]\p{L}*?>)#i'; foreach ($words as $word) { $word = preg_quote($word); $regex = sprintf($pattern, $word); $str = preg_replace($regex, $highlight, $str); } return $str; }
Partager