Bonjour,
J'utilise l'autocomplete jquery ui. Je souhaite rendre possible la mise en évidence des caractères tapés (par du gras par ex), ceci dans la liste des items proposés. Par ex si je tape "ra", il me serait proposé :
radin
parade
etc
L'utilisation de preg_replace et d'une expression régulière semble convenir à la problématique :
Or la combinaison du preg_replace et de l'expression régulière ne donne pas le résultat escompté. Si je tape dans l'input text les caractères "ra", le système m'affiche le choix suivant :
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 if ($conn) { $fetch = mysql_query("SELECT * FROM (SELECT titre AS res, concat('t',id_livre)AS id FROM livre WHERE titre LIKE '%".mysql_real_escape_string($_GET['term'])."%' union ALL SELECT prenom_nom_cb AS res, concat('c',id_contributeur) AS id FROM contributeurs WHERE nom_prenom_cb LIKE '%".mysql_real_escape_string($_GET['term'])."%'OR prenom_nom_cb LIKE '%".mysql_real_escape_string($_GET['term'])."%') AS resultat ORDER BY res ASC LIMIT 0,10"); //particularité du jquery autocomplete =>Le passage de la valeur cherchée se fait par la variable $_GET['term'] while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) { $row['res']= preg_replace('.(' . preg_quote($_GET['term']) . ').i', '<span style="color:red">\1</span>', $row['res']);//mise en évidence lettres tapées dans liste proposition $row_array['value'] = $row['res']; array_push($return_arr,$row_array); } } mysql_close($conn); echo json_encode($return_arr);
au lieu de colorer en rouge les caractères "ra".
Code : Sélectionner tout - Visualiser dans une fenêtre à part pa<span style="color:red">ra</span>de
Voyez-vous les raisons de ce dysfonctionnement ? Merci.
Partager