[PREG_REPLACE] Problème avec \\1

Fermé
Mathieu - 8 août 2006 à 08:43
 Mathieu - 8 août 2006 à 10:22
Bonjours à tous

voilà j'ai un problème lorsque je veux décodé de l'HTML
voici un exemple:

echo preg_replace("~&#([0-9a-f]+);~", chr(hexdec("\\1")), "&");

il me sort un carré o_O sans doute qu'il encode \\1 est pas le 038 qu'il deverait me sorti, car l'encodage de 038 en ASCII donne &

si je retire chr et hexdec je vois bien 038

pourriez vous m'expliquer comment palier à ce problème?

ps: sur le site de php.net ils font un exemple avec perg_replace mais en testant (copier coller) j'ai le même resultat qu'ici! (le carré :o)

je vous remerci déjà pour avoir lu mon sujet, et je vous remerci d'avance pour vos nombreuses réponses qui me permetteront d'avancé, tant sur le plan de la langue française que sur le plan de la programmation ;)

4 réponses

j'ai trouvé ;)

echo preg_replace("~&#([0-9a-f]+);~", 'chr(hexdec("\\1"))', "&");

suffit de rajouté des ' ;)

je vous remerci quand même...
0
avec l'option e ;)

Voici:

echo preg_replace("~&#([0-9a-f]+);~e", 'chr(hexdec("\\1"))', "&");

j'espère que ça aidera des personnes :) (j'en suis sure)
0
Darshu Messages postés 303 Date d'inscription lundi 30 janvier 2006 Statut Membre Dernière intervention 3 avril 2008 64
8 août 2006 à 09:11
Sinon il y aussi la possibilité d'utiliser str_replace dans certains cas :)
0
str_replace() retourne une chaîne ou un tableau, dont toutes les occurrences de search dans subject ont été remplacées par replace. Si vous n'avez pas besoin de règles de remplacement compliquées, utilisez cette fonction de préférence à ereg_replace() et preg_replace().

;) je pense que c'est pas le cas présent, mais merci de le souligné ;)
0