cambia la funcion limpiar_caracteres_especiales() de esta forma....
Código PHP:
function limpiar_caracteres_especiales($string ){
$string = htmlentities($string);
$string = preg_replace('/\&(.)[^;]*;/', '\\1', $string);
$sacar = array('?', ',', '-', '.', ':', '´', "'", '¿', "\\",'"','”','“', ';'); // agrega aqui todos los signos de puntuacion que falten
$string = str_replace($sacar, ' ', $string);
return $string;
}