Aquí una función php que utilizo al generar archivos XML, para «limpiar» cadenas de texto con caracteres no permitidos en XML como «<", ">«, «&», «‘». Usando arrays para guardar las cadenas a reemplazar con str_replace():

function limpioCaracteresXML($cadena){
    $search  = array("<", ">", "&", "'");
    $replace = array("<", "&gt", "&", "&apos");
    $final = str_replace($search, $replace, $cadena);
    return $final;
}

Un ejemplo de uso al generar el xml:

<title><?php echo limpioCaracteresXML($titulo); ?></title>
<pubDate><?php echo date("D, d M Y H:i:s O", $fecha)?></pubDate>
<link><?php echo limpioCaracteresXML($link)?></link>
<description><?php echo limpioCaracteresXML($descripcion); ?></description>
<category><?php echo limpioCaracteresXML($categoria); ?></category>
</item>

Agradezco tu comentario 🤘