OVH Cloud OVH Cloud

enlever certain ...

1 réponse
Avatar
pablo
salut


lors d'une modification ou insertion d'un message dans un forum, le code
suivant est exécuté....

$str = $_POST["mes_message"];
$str = preg_replace_callback('`\[(code|url|img)\](.+?)\[/\1\]`si', 'bbcode',
$str);
$str = nl2brStrict($str);
$str = stripslashes($str);
$str = mysql_real_escape_string($str);

function nl2brStrict($text)
{
return ereg_replace("(\r\n)+", '<br />', $text);
}

function bbcode($m) {
switch($m[1]) {
// balise <code>
case 'code' :
return '<div
class="code"><pre>'.htmlentities($m[2]).'</pre></div>';
break;
// balise <url>
case 'url' :
if (preg_match ('`^http://`', $m[2]))
return '<a href="'.$m[2].'" class="machin">'.$m[2].'</a>';
else
return '<a href="http://'.$m[2].'" class="machin">'
$m[2].'</a>';
break;
// balsie <img>
case 'img' :
return '<img src="'.$m[2].'" alt="mon image"/>';
}
}

je sais pas si c'est vraiment la meilleur façon de le faire..... mais ça
fonctionne....

le hic c'est que ça enlève aussi les \ dans le texte du bbcode (tag code)
pour ce cas là...... je voudrais pas que les \ soient enlevé....

une idée?

merci

1 réponse

Avatar
CrazyCat
doubler tes dans le bbcode?
En clair, ta première action dans ta fonction bbcode est:
strtr($m[2], "", "\");