Pb d'affichage de news saisie dans un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Pb d'affichage de news saisie dans un formulaire

par jay64 » 21 déc. 2006, 12:16

Bonne nouvelle, j'ai trouvé comment résoudre mon problème !

En fait, je n'utilise pas de fonction htmlentities(), je n'ai plus que la fonction bbcode(), et pour mes lettres accentuées, j'ai simplement résolu le pb en mettant ceci dans la meta :

Code : Tout sélectionner

<META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Merci à tous pour votre aide !

Jay

par jay64 » 21 déc. 2006, 10:44

Désolé, mais le résultat est le même, à savoir que le bbcode fonctionne bien mais pas les caractères spéciaux.
J'ai toujours à l'affichage un truc du genre :
... dйjа le Comitй Directeur ...
Par contre, quand je code ceci :
<?php echo htmlentities($ligne_News1['DetailNews']); ?>
, j'ai cette fois-ci bien le texte mais ce sont les balises bbcode qui s'affichent au lieu d'être traduites. GGGRRRRR .... :evil:

Une autre idée ?

par winni » 20 déc. 2006, 19:58

htmlentities() c'est pour "coder".
Essaye html_entity_decode()

par jay64 » 20 déc. 2006, 16:38

Voici ma fonction bbcode :
function bbcode($t) 
// remplace les balises BBCode par des balises HTML 
{  
   // gras 
   $t=str_replace("[b:4aca2fe980]", "<strong>", $t); 
   $t=str_replace("[/b:4aca2fe980]", "</strong>", $t); 
    
   // italique 
   $t=str_replace("[i:4aca2fe980]", "<em>", $t); 
   $t=str_replace("[/i:4aca2fe980]", "</em>", $t); 
    
   // soulignement 
   $t=str_replace("[u:4aca2fe980]", "<u>", $t); 
   $t=str_replace("[/u:4aca2fe980]", "</u>", $t); 
    
   $t=str_replace("[/color]", "</span>", $t); 
   $regCouleur="\[color= ?(([[:alpha:]]+)|(#[[:digit:][:alpha:]]{6})) ?\]"; 
   $t=ereg_replace($regCouleur, "<span style=\"color: \\1\">", $t); 
    
   // lien 
   $regLienSimple="\[url\] ?([^\[]*) ?\[/url\]"; 
   $regLienEtendu="\[url ?=([^\[]*) ?] ?([^]]*) ?\[/url\]"; 
   if (ereg($regLienSimple, $t)) $t=ereg_replace($regLienSimple, "<a href=\"\\1\" target=\"_blank\"><span class=\"blue\">\\1</span></a>", $t); 
   else $t=ereg_replace($regLienEtendu, "<a href=\"\\1\" target=\"_blank\"><span class=\"blue\">\\2</span></a>", $t); 
  
    // image 
   $regImage="\[img\] ?([^\[]*) ?\[/img\]"; 
   $regImageAlternatif="\[img ?= ?([^\[]*) ?\]"; 
   if (ereg($regImage, $t)) $t=ereg_replace($regImage, "<img src=\"\\1\" alt=\"\" border=\"0\" />", $t); 
   else $t=ereg_replace($regImageAlternatif, "<img src=\"\\1\" alt=\"\" border=\"0\" />", $t); 
   
    
   return $t;  

}
?>
Et le code d'insertion est le suivant (déjà cité plus haut) :


<?php echo htmlentities(bbcode($ligne_News1['DetailNews'])); ?>
Merci !

par winni » 20 déc. 2006, 16:32

Montre moi ton code d'insertion stp.

par jay64 » 20 déc. 2006, 16:09

en fait, le problème que je rencontre, c'est qu'en écrivant ceci :
<?php echo htmlentities(bbcode($ligne_News1['DetailNews'])); ?>
J'ai bien les lettres accentuées qui appraissent mais cette fois-ci c'est la fonction bbcode qui n'agit plus.

Je m'y prends mal pour combiner ces deux fonctions ?

par winni » 19 déc. 2006, 23:22

Combine :-)

par jay64 » 19 déc. 2006, 23:02

Bon, je progresse ... !

Cependant, j'avais avant la fonction htmlentities() qui me gardait les caractères spéciaux tels que les lettres accentuées.
Depuis que j'utilise la fonction bbcode(), je n'ai plus les lettres accentuées conservées.
Puis-je combiner ces deux choses ou intégrer le htmlentities dans la fonction bbcode() ?

Merci !

par Ryle » 18 déc. 2006, 15:36

bah oui :)

Il te suffit de l'appeler avant, après, pendant, quand tu veux en fait... testes la donc en différents endroits et voit ce qui est le plus pratique pour toi :)

par jay64 » 18 déc. 2006, 15:28

Yes !

Et puis-je combiner la fonction nl2br() avec la fonction bbcode() créée précédemment ?

par Ryle » 18 déc. 2006, 15:22

Tu pourrais bien sur envisager de réaliser une fonction qui remplacerait les "\n" et "\r\n" correspondant aux retours charriot saisis dans un champ texte par des <br /> lors de l'affichage, mais puisqu'il existe une fonction nommée nl2br() qui fait ça très bien, ce serait dommage de ne pas en profiter ;)

par jay64 » 18 déc. 2006, 15:08

Merci, c'est excatement ce qu'il me faut !

Par contre, comment gérer les retours à la ligne ?

Merci !

par winni » 18 déc. 2006, 13:45

Fonction bbcode qui permet de déchiffrer le bbcode.
function bbcode($t)
// remplace les balises BBCode par des balises HTML
{
 
   // gras
   $t=str_replace("[b]", "<strong>", $t);
   $t=str_replace("[/b]", "</strong>", $t);
   
   // italique
   $t=str_replace("[i]", "<em>", $t);
   $t=str_replace("[/i]", "</em>", $t);
   
   // soulignement
   $t=str_replace("[u]", "<u>", $t);
   $t=str_replace("[/u]", "</u>", $t);
   
   $t=str_replace("[/color]", "</span>", $t);
   $regCouleur="\[color= ?(([[:alpha:]]+)|(#[[:digit:][:alpha:]]{6})) ?\]";
   $t=ereg_replace($regCouleur, "<span style=\"color: \\1\">", $t);
   
   // lien
   $regLienSimple="\[url\] ?([^\[]*) ?\[/url\]";
   $regLienEtendu="\[url ?=([^\[]*) ?] ?([^]]*) ?\[/url\]";
   if (ereg($regLienSimple, $t)) $t=ereg_replace($regLienSimple, "<a href=\"\\1\" target=\"_blank\"><span class=\"blue\">\\1</span></a>", $t);
   else $t=ereg_replace($regLienEtendu, "<a href=\"\\1\" target=\"_blank\"><span class=\"blue\">\\2</span></a>", $t);
 
    // image
   $regImage="\[img\] ?([^\[]*) ?\[/img\]";
   $regImageAlternatif="\[img ?= ?([^\[]*) ?\]";
   if (ereg($regImage, $t)) $t=ereg_replace($regImage, "<img src=\"\\1\" alt=\"\" border=\"0\" />", $t);
   else $t=ereg_replace($regImageAlternatif, "<img src=\"\\1\" alt=\"\" border=\"0\" />", $t);
   
   return $t;
}
Et a l'affichage :
<?php echo bbcode($Variable); ?>
Adapte le suivant tes besoins.

par jay64 » 18 déc. 2006, 13:13

Oui, j'ai regardé la doc.
J'ai bien compris que cette fonction permet de remplacer des occurences par d'autres, mais mon problème consiste à savoir quoi mettre en remplacement de "[b]monde[/b]" par exemple.
Tout comme je ne sais pas comment indiquer des retours à la ligne.

par charabia » 17 déc. 2006, 16:43