[PREG_REPLACE] Problème avec \\1

Mathieu -  
 Mathieu -
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

Mathieu
 
j'ai trouvé ;)

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

suffit de rajouté des ' ;)

je vous remerci quand même...
0
Mathieu
 
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 Statut Membre 64
 
Sinon il y aussi la possibilité d'utiliser str_replace dans certains cas :)
0
Mathieu
 
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