&
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);
}