OVH Cloud OVH Cloud

Probleme avec htmlentities

1 réponse
Avatar
Olivier DAGRY
Bonjour,

J'ai une fonction qui affiche en clair tout le balisage html et empêche
l'execution du php que j'utilise surtout avec mes formulaires.
Le problème est que dans cette même fonction j'essaye avec eregi_replace de
remplacer les balises bbcode [code][/code] par un div pour mettre en
évidence le code php seulement avec htmlentities le div lui aussi apparaît
en clair dans la page et n'est donc pas interprété par le navigateur.
J'aimerai empêcher l'interprétation par le navigateur du code html et php et
que mes [code][/code] soient bien remplacés par un <div> et que ce dernier
soit bien interprété par le navigateur.

Si vous avez une idée ...

D'avance, merci beaucoup.
Olivier

1 réponse

Avatar
Decryptus
Je pense que ca devrait t'aider.
Si tu as besoin d'explication, n'hésites pas.

$text = 'Mon code fait un split de code'."n";
$text .= 'voilà un exemple du code : [code]<?php echo 'Hello World
!';'."n";
$text .= '?>[/code] donc le résultat est bien celui escompté, enfin
j'espère ;)'."n";

$arr = preg_split('/[(|/)code]/',$text);

if(is_array($arr) && ($cnt = count($arr)))
{
$t = '';
$j = $cnt % 2;
$nb = 0;

for($i=0;$i<$cnt;$i++)
{
if($j)
{
if($i % 2)
$t .= '<div>'.htmlentities($arr[$i]).'</div>';
else
$t .= htmlentities($arr[$i]);
}
else
{
if($i % 2)
$t .= htmlentities($arr[$i]);
else
$t .= '<div>'.htmlentities($arr[$i]).'</div>';
}
}
}
else $t = htmlentities($text);

$t = nl2br($t);

echo $t;