Te servirá esta función?, la encontré por ahí, no la he probado pero quizás pueda servirte de algo
Esto es lo que cuenta su autor
Hoy me interesava por el mundo de los RSS y decidí integrarlo en mi web, para que los visitantes, pudieran obtener nuestras noticias y publicacions de prensa mas a mano.
Pero se me plantearon algunos problemas como eran las tildes, que al passar el htmlentities, se volvian del tipo ´ i tal y entonces no validava el archivo xml, para solucionarlo un compañero, sometent, me paso una funcion que dijo no recordar de donde la saco (le suena que de php.net) pero no lo recuerda bien.
Esta funcion soluciona este problema convirtiendo '&' en '&'
y esta es la función que creó para solucionarlo.
Código :
function xmlentities($string, $quote_style=ENT_QUOTES) {
static $trans;
if (!isset($trans)) {
$trans = get_html_translation_table(HTML_ENTITIES, $quote_style);
foreach ($trans as $key => $value)
$trans[$key] = '&#'.ord($key).';';
// no traduce el '&' si és parte de &xxx;
$trans[chr(38)] = '&';
}
// després de traducirlo, pasa el '&' a '&'
return preg_replace("/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/","&" , strtr($string, $trans));
}
Espero que te sirva.
Saludos.