12-08-2013, 02:24 PM
Le callback est nécessaire. preg_replace ne fait qu'un remplacement littéral: la chaîne de caractères trouvées sera remplacée par la chaîne de caractères $replace, aux $1..$N près.
Dans ton cas, tu aimerais passer la chaîne trouvée à la fonction htmlentities, ce qui n'est pas possible en utilisant une chaîne de caractères $replace dans preg_replace, d'où la callback.
Si htmlentities avait pris, comme paramètre, un tableau $p_matches, la callback aurait pu être directement la fonction htmlentities. Mais ce n'est pas le cas, d'où la nécessité de passer par une callback intermédiaire, aka, une fonction perso (anonyme ici).
Dans ton cas, tu aimerais passer la chaîne trouvée à la fonction htmlentities, ce qui n'est pas possible en utilisant une chaîne de caractères $replace dans preg_replace, d'où la callback.
Si htmlentities avait pris, comme paramètre, un tableau $p_matches, la callback aurait pu être directement la fonction htmlentities. Mais ce n'est pas le cas, d'où la nécessité de passer par une callback intermédiaire, aka, une fonction perso (anonyme ici).