&
en XML inicia una entidad. Como no ha definido una entidad &WhateverIsAfterThat
se arroja un error. Deberías escaparlo con &
.
$string = str_replace('&', '&', $string);
¿Cómo escapo los símbolos de unión en XML
Para escapar de los otros caracteres reservados:
function xmlEscape($string) {
return str_replace(array('&', '<', '>', '\'', '"'), array('&', '<', '>', ''', '"'), $string);
}