2008-10-20, 04:23 PM
(This post was last modified: 2008-10-20, 04:29 PM by Ryan Gordon.)
We replace < and > with < and > so when you do that it sees <) and >) and it matches the ";)" part which is causing the problem. I guess we just fix the code to correctly check if there is a preceding html entity before
if(is_array($this->smilies_cache))
{
foreach($this->smilies_cache as $find => $replace)
{
$find = $this->parse_html($find);
if(version_compare(PHP_VERSION, "5.1.0", ">="))
{
$message = preg_replace("#(?<=[^&;\"])".preg_quote($find,"#")."(?=.\W|\"|\W.|\W$)#si", $replace, $message, $remaining, $replacements);
$remaining -= $replacements;
if($remaining <= 0)
{
break; // Reached the limit
}
}
else
{
$message = preg_replace("#(?<=[^&;\"])".preg_quote($find,"#")."(?=.\W|\"|\W.|\W$)#si", $replace, $message, $remaining);
}
}
}
inc/class_parser.php