Filtre HTML

Résolu
ldevun Messages postés 58 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 7 avril 2009 - 16 août 2006 à 15:34
ldevun Messages postés 58 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 7 avril 2009 - 18 août 2006 à 15:01
Bonjour,
J'ai un filtre HTML que j'ai récupéré sur le forum, mais celui-ci a un probleme, il ne m'affiche pas les "<" des balises exemple :

P>Ca FONT color=#ff0000>marche







P> EM>pas très STRONG>bien

Voici le code du filtre html, merci de votre aide.

$TagIsAllowed = false ;
$CurrentTag = "";
$FilteredText="";
$i=0;
$j=0;


/* On parse le texte */


while($i<strlen($text))
{    if( ($text{$i} !"<") OR (($text{$i} "<") && ($text{$i+1}=="/" )     )  ) //on cherche des tags html
    { 
    $FilteredText = $FilteredText . $text{$i}; //si pas de tag html, pas de filtrage
    $j++;
    $i++;
    }
    else
    {
    $i++; //on s'interresse au caractere suivant le <
   
        /* on verife que le tag html utilisé est autorisé */   
     foreach ($tags as $TestTag)
        {
       
         $CurrentTag = substr($text,$i,strlen($TestTag));
       
         if (substr_count($CurrentTag,$TestTag) == 1) //si le tag est autorisé on agit en consequence
         {
         $TagIsAllowed = true ;
         $FilteredText = $FilteredText . ">" . $CurrentTag ;
         $i = $i + strlen($TestTag) ;
         }
       
        }
       
        /* si le tag n'est pas autorisé on efface tout jusqu'à la fin du tag */
        if ($TagIsAllowed = false) 
          {
              while ((substr($text,$i,2)!= "</" )&&($i<strlen($text)))
              {
              $i++;
              }
          }
       
       
    } 
}
 




/*Remplacement des \n par des
*/


$FilteredText = preg_replace('/\n/i', '
', $FilteredText);


return $FilteredText;
}
?>

12 réponses

psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
18 août 2006 à 14:52
ALORS UTILISE HTMLSPECIALCHARS();
hum...
3
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
16 août 2006 à 16:50
Salut,
sans même lire le code,  je pense que mettre $TagIsAllowed = true; devrait marcher
à+
0
ldevun Messages postés 58 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 7 avril 2009
16 août 2006 à 16:55
Non, ca ne marche pas.
0
Evangun Messages postés 1980 Date d'inscription dimanche 20 février 2005 Statut Membre Dernière intervention 24 septembre 2012 4
16 août 2006 à 16:58
Alors efface cette partie :
($text{$i} != "<") OR
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ldevun Messages postés 58 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 7 avril 2009
16 août 2006 à 17:01
Je viens d'essayer mais ca ne marche pas non plus ca.
J'ai cherché mais je ne trouve pas l'erreur pourtant il y en a bien une.
0
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
18 août 2006 à 13:09
if( ($text{$i} != "<") OR (($text{$i} == "<") && ($text{$i+1}=="/" )     )  ) //on cherche des tags html
if( ($text{$i} "<") OR (($text{$i} "<") && ($text{$i+1}=="/" )     )  ) //on cherche des tags html
0
ldevun Messages postés 58 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 7 avril 2009
18 août 2006 à 14:41
Bonjour,
Ca ne change rien, il ne m'affiche toujours pas les balises "<"...
Dites moi si vous avez d'autres idées. Merci
0
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
18 août 2006 à 14:41
echo htmlspecialchars($code_html);
0
ldevun Messages postés 58 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 7 avril 2009
18 août 2006 à 14:43
Je le fais ou cet echo? Quel est l'intéret, car je ne comprend pas
0
psykocrash Messages postés 240 Date d'inscription vendredi 14 juin 2002 Statut Membre Dernière intervention 17 mars 2009
18 août 2006 à 14:47
Si je comprend bien, le visiteur peux écrire mais tu ne veux pas que le html qu'il pourrait mettre soit interprété par le naviguateur, c'est bien ça ? alors tu n'a qu'a utiliser la fonction htmlspecialchars($texte);

Sinon l'erreur pourra peut etre etre réglée si tu fait ça :
if ($text{$i} == "<") //on cherche des tags html
0
ldevun Messages postés 58 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 7 avril 2009
18 août 2006 à 14:51
Oui, je souhaite que le texte que met l'utilisateur ne soit pas interprété s'il met du html. Mais je veux surtout mettre les balises html correspondant à la mise en forme que l'utilisateur a fait.

L'erreur n'est pas réglé si je fais : if ($text{$i} == "<")
0
ldevun Messages postés 58 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 7 avril 2009
18 août 2006 à 15:01
Merci beaucoup ca marche avec htmlspecialchars();
0
Rejoignez-nous