Bonjour tous.
J'ai une application qui cherche des termes entrés par les visiteurs dans des lignes de textes et il m'arrive un truc dingue Exclamation


Il y a eu un changement de serveur chez mon hébergeur pour PHP 5.2.8/linux.
Depuis j'ai un problème qui a l'air d'être spécifique de la lettre "E" sur ce serveur et pas en local (PHP 5.2.0/win XP) Exclamation

Voilà ma bidouille de départ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
$phrase = 'Aaron prit pour femme Élischéba, fille d\'Amminadab, soeur de Nachschon; et elle lui enfanta Nadab, Abihu, Éléazar et Ithamar.';
$mot = 'Eléazar';
 
$a = txt2reg($mot, 0, 0); // transfo du mot à chercher en expression régulière
$get = get($a, $phrase, 'tt'); // marquage des termes dans la phrase à scanner
echo $mot.' -> '.$a.' =>> '.$get; // écriture du résultat
 
function txt2reg($word, $casse, $mot_cplt){
 $word = str_replace('/', '', $word);
 $word = str_replace('\\', '', $word);
 $search = array ("'[AÀÁÂÃÄ]'", "'[CÇ]'", "'[EÈÉÊË]'", "'[IÌÍÎÏ]'", "'[NÑ]'", "'[OÒÓÔÕÖ]'", "'[UÙÚÛÜ]'", "'[aàáâãä]'", "'[cç]'", "'[eèéêë]'", "'[iìíîï]'", "'[nñ]'", "'[oòóôõö]'", "'[uùúûü]'");
 $replace = array ('[AÀÁÂÃÄ]', '[CÇ]', '[EÈÉÊË]', '[IÌÍÎÏ]', '[NÑ]', '[OÒÓÔÕÖ]', '[UÙÚÛÜ]', '[aàáâãä]', '[cç]', '[eèéêë]', '[iìíîï]', '[nñ]', '[oòóôõö]', '[uùúûü]');
 $txt = preg_replace ($search, $replace, $word);
 $txt = "($txt)";
 if ($mot_cplt == 1) $txt = "\b$txt\b";
 $txt = "/$txt/";
 if ($casse != 1) $txt = $txt.'i'; 
 return $txt;
}
 
function get($a, $texte, $bool){ 
 $l1 = $l = strlen($texte);
 // encadrer le mot
 $texte = preg_replace($a, '<X>$1</X>', $texte); 
 $l = strlen($texte);
 // si on n'a trouvé aucun mot
 if ($l == $l1) $texte = 'rien trouvé';
 // si on a trouvé des mots, remplacer X par SPAN 
 else {
     $texte = str_replace('<X>', '<SPAN CLASS=q>', $texte);
     $texte = str_replace('</X>', '</SPAN>', $texte);
 }
 return $texte; 
}
si je cherche Eleazar, ELEAZAR, elEazar ou tout autre modification de casse et d'accents, ça marche très bien en local.
Par contre dès que je change la casse d'un 'e', ça ne passe plus du tout sur le serveur PHP5.2.8 alors que ça passe très bien pour le changement de casse des autres lettres.

Si quelqu'un a vu un tel bug ou peut tester ce petit script sur d'autres versions PHP ou OS...

merci d'avance.