Los strings que se pasan en la funcion deben tener el identificador $ y si no le pones lo toma como valor de una constante
Código PHP:
function filtro($a)
{
$listanegra=array("'",'\\','<','>',"\"",";","$","% ","&","/","|","{","}","[","]","(",")",":","=","+","#");
$a= str_replace($listanegra,"",$a);
return mysql_real_escape_string ($a);
}
PD: Con sólo llamar la función mysql_real_escape_string() ya estas filtrando caracteres prohibidos