&
en XML démarre une entité. Comme vous n'avez pas défini d'entité &WhateverIsAfterThat
une erreur est renvoyée. Vous devriez l'échapper avec &
.
$string = str_replace('&', '&', $string);
Comment échapper les esperluettes en XML
Pour échapper les autres caractères réservés :
function xmlEscape($string) {
return str_replace(array('&', '<', '>', '\'', '"'), array('&', '<', '>', ''', '"'), $string);
}