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++;
}
}
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
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} == "<")