Bonsoir,
un petit problème qui me bloque depuis quelques jours déjà :)
Dans Spip, dans un squelette, je fait appel a une table d'un forum IPB 2.3. J'affiche des donnée, un coup de utf8_encode et c'est nickel
seulement, il m'est impossible de faire un str_ireplace("style_emoticons/<#EMO_DIR#>" ,'../ipb/style_emoticons/default' ,$contenu );
le <#EMO_DIR#> n'est jamais trouvé
alors que si je rempli $contenu en dur, avec un <#EMO_DIR#> dedans, il est remplacé
j'ai essayé de mettre un utf8_encode avant le replace mais ça change rien
qu'est ce que je pourrais faire pour que les données de la base soit "nettoyé" et que mon replace fonctionne ? :/
Peut être une fonction MySQL ? nan je sais vraiment pas quoi faire.
Oui c'est bien "style_emoticons/<#EMO_DIR#>" que je recherche,
seulement le <#EMO_DIR#> fait "planter" le replace.
Je suis absolument certain que la chaine que je test comporte un "style_emoticons/<#EMO_DIR#>", seulement PHP ne le trouve pas, d'ou ce sujet (parce que je ne vois vraiment pas pourquoi ça ne marcherai pas...).
Existe t'il des fonction MySQL pour nettoyer les donnée ? Les caractéres <> et # ne serait il pas interdit ?
Ben tu as l'air de dire que tes données sont ok avec un echo (si tu l as bien vérifié), donc tes données en base sont bonnes.
j'ai copier coller le resultat du echo dans $contenu, (en écrasant les données précedentes) et le replace marche nickel !
Donc cela veut dire que $contenu est modifié entre l'instant ou tu le cherches en base et l'instant ou tu fais le str_ireplace.
Genre htmlentities ou nl2br ou j'sais pas quoi...
Tes preg_replace, tu les fais avant ou après le str_ireplace ?
Enfin bref, c'est pas un bug de genre données en dur ou non. Tu as forcément une différences entre les deux au niveau de la chaine.