[-&!&_a-zA-Z0-9+]*
No estoy muys eguro, pero en todo caso no habria que escapar ese +?
[-&!&_a-zA-Z0-9\\+]*
O algo asi xD..
Ya si lo que quieres es quitar el caracter de la url, modifcando tu funcion que ya tienes un poco..
Código PHP:
function elimina_acentos($cadena){
$tofind = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
$replac = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn";
$cadena = strtr($cadena,$tofind,$replac);
return str_replace("+","",$cadena);
}