Données qui disparaissent dans htmlentities o_O

Petit nouveau ! | 6 Messages

12 avr. 2013, 20:12

Bonjour,

j'ai un bug depuis la mise à jour de PHP: lorsque j'utilise htmlentities, la chaîne de caractères que je lui envoie disparaît parfois !

Par exemple dans ce code :

Code : Tout sélectionner

while($data = mysqli_fetch_assoc($req)) { // on affiche les informations de l'enregistrement en cours ?> <li> <p class="presse_titre"><?php if (!empty($data['fichier'])) { ?> <a href="presse/<?php echo htmlentities($data['fichier']); ?>" target="_blank"> <?php } if (!empty($data['lien'])) { ?> <a href="<?php echo htmlentities($data['lien']); ?>" target="_blank"> <?php } echo htmlentities($data['nom']); ?></a></p> <p class="presse_decription">(<?php echo htmlentities($data['auteur']); ?>, <?php echo $data['jour']." ".$mois[$data['mois']]." ".$data['annee']; ?>)</p> </li> <?php }
Si $data['lien'] est empty, la ligne echo htmlentities($data['nom']); n'écrit rien, mais lorsque je retire htmlentities (echo $data['nom'];) ma chaîne de caractères s'affiche (sans les accents).

Quelqu'un comprend ce qui se passe ?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

12 avr. 2013, 21:05

salut,

que donne un var_dump($data); ?


@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 6 Messages

13 avr. 2013, 20:46

Salut,

J'ai fait un var_dump et tout s'affiche bien (à l'exception des caractères spéciaux). En fait, htmlentities semble renvoyer une chaîne vide à cause d'un problème d'encodage. J'ai fait echo mb_detect_encoding($data['nom']); et je m'aperçois que les deux enregistrements qui s'affichent correctement (lequels n'ont pas de caractère spécial) sont an ASCII alors que les autres sont en UTF-8. Pourtant htmlentities est censé supporter l'UTF-8 #-o Je pige pas, et j'arrive pas à changer l'encodage de ma table :(