& em XML inicia uma entidade. Como você não definiu uma entidade &WhateverIsAfterThat um erro é lançado. Você deve escapar com & . $string = str_replace('&', '&', $string);
Como faço para escapar de e comercial em XML
Para escapar dos outros caracteres reservados:
function xmlEscape($string) {
return str_replace(array('&', '<', '>', '\'', '"'), array('&', '<', '>', ''', '"'), $string);
}