Html_entity_decode() avant qu'existait-il ? [Résolu]

Signaler
Messages postés
60
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
21 mai 2013
-
malalam
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
-
Salut à tous,

Voici mon pb du jour.

mon serveur est en php 4.2.2

Or, je voulais utilser html_entity_decode(), mais cette fonction n'existe qu'à partir de 4.3.0.

Ma question est:
Dans ma base de donnée, une personne écrivant dans un livre d'or par exemple, à l'aide de la fonction nl2br(), transforme chaque saut de ligne en
.

Comment le retranscrire, c'est à dire qu'à chaque
, il me faudrait voir apparaitre un saut de ligne ???

Merci de votre aide

12 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
19
Essaye de jouer avec les styles du conteneur de ton texte. Il y a peut-être un soucis à ce niveau là.
Messages postés
265
Date d'inscription
samedi 25 décembre 2004
Statut
Membre
Dernière intervention
13 novembre 2012

htmlentities()

je c pas si c sa tu voulais...

Jn
Messages postés
60
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
21 mai 2013

J'ai essayé, mais cela ne fonctionne pas
merci
Messages postés
265
Date d'inscription
samedi 25 décembre 2004
Statut
Membre
Dernière intervention
13 novembre 2012

Je comprends mal ta question...
Messages postés
60
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
21 mai 2013

la fonction html_entity_decode() n'existe pas avant php 4.3.0

Donc quand dans ma base , j'ai des
, sur la page par exemple livredor.php, il n'y a pas de saut à la ligne. Et la foncytion htmlentities() ne résout pas mon problème....
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
19
Hello,



fais voir ton code parce qu'il y a un truc qui m'intrigue.

Quand tu récupères le texte de tes utilisateurs, tu dois faire un
htmlentities () dessus, ok, pour des raisons de sécurité (il y a
d'autres choses à faire hein, ne pas oublier addslashes() notamment).

Une fois que tu affiches ce texte, tu fais tout d'abord un nl2br ().

Ce qui va se passer dans l'ordre :

le mec tape son texte. Le htmlentities () transforme tout caractère
spécial html en son entité. Il est enregistré tel quel dans ta base.
S'il tape <bonjour, dans ta base tu auras : &lg;bonjour.

S'il fait des retours à la ligne, tu auras en effet des \n\l (dépend du système quand même) invisibles.

Lorsque tu affiches, tu ne touches pas aux entités, elles seront
traduites à l'affichages : &lg;bonjour s'affichera ainsi :
<bonjour. Sachant que le < ne sera pas interprété par
l'interpréteur html, juste affiché, grâce à ton htmlentities() que tu
as fait à l'ENREGISTREMENT (pas à l'affichage!). Quant aux sauts de
lignes, ils seront transformés en
grâce au nl2br()
que tu auras fait à l'AFFICHAGE de ta page, pas à l'enregistrement.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
19
Et ces
seront interprétés, pas affichés, car ils n'ont pas été touchés par le htmlentities().

Tu n'as pas besoin d'un html_entity_decode () dans ton cas. Relis bien
à quoi servent ces fonctions, je pense que tu t'emmèles un peu les
pinceaux.
Messages postés
60
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
21 mai 2013

Bonjour,


effectivement je n'ai pas tout compris :


Voici mon code qui récupère le texte :


// Function htm(texte) Transforme la mise en forme Ascii d'une textarea en html
Function htm($chaine)
{
$ChaineFinale = "";
if ($chaine!="")
{
$ChaineFinale = htmlentities($chaine);
$ChaineFinale = nl2br($ChaineFinale) ;
$ChaineFinale = addslashes($ChaineFinale);
return ($ChaineFinale);
}
}

*******************************
et celle qui devrait me permettre de tout mettre au format html
//###########################################################
// Function: dhtm(chaine) - Inverse de htm
//''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function dhtm($chaine)
{
$ChaineFinale = "";
if ($chaine!="")
{
$ChaineFinale = str_replace(chr(10),"",$chaine);
$ChaineFinale = str_replace(chr(34),""",$ChaineFinale);
$ChaineFinale = str_replace("
",chr(10),$ChaineFinale);
$ChaineFinale = str_replace("
",chr(10),$ChaineFinale);
$ChaineFinale = stripslashes($ChaineFinale);
}
return ($ChaineFinale);
}

Voilou,je compte sur ton aide car là je sèche....
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
19
Rien compris à l'utilité de ton code, lol.



avant mis en bdd :



$chaine = addslashes ($chaine);

$chaine = htmlentities ($chaine);



avant affichage :



$chaine = stripslashes ($chaine);

$chaine = nl2br ($chaine);



echo $chaine;
Messages postés
60
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
21 mai 2013

On approche du but....


Le pb c qu'il ne me fait pas un retour à la ligne , mais un retour puis une ligne blanche et le reste de mon message....
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
19
Tu es en html, c'est normal.
Messages postés
60
Date d'inscription
jeudi 21 octobre 2004
Statut
Membre
Dernière intervention
21 mai 2013

et ca on peut rien y faire ????
en tous cas merci pour tout....