L'informatique, c'est de la rigueur.

Bon, après, y'en a qui ne comprennent pas et qui publient des trucs foireux. Donc quand dans un flux XML vous avez des personnes qui utilisent le caractère & autrement que comme entitée HTML (&, &acute, <…) en oubliant par exemple de parser une URL, on obtiens une belle erreur en exploitant le flux.

Solution pour corriger si le responsable du bug met 15 plombes à réagir :
//Attention, patch honteux
$pattern = "/(&[^a-zA-Z\#])|(&\#[^0-9])|(&[a-zA-Z]+[^;a-zA-Z])|(&\#[0-9]+[^;0-9])/";//bullshit pattern
$replacement = "&$2";//rustine grosse comme ma B
if( preg_match_all ($pattern, $raw_flux, $matches) > 0 ) {
//A chaque fois que le script entre dans cette boucle, Dieu tue un chaton (Shami inclus)
$datas=explode('<![CDATA[',$raw_flux);//on ne fait des remplace que sur les parties hors de <![CDATA[ * ]]>
foreach($datas as $key => $cdt) {
if($key>0) {
$ct=explode(']]>',$cdt);
$ct[1] = preg_replace ($pattern, $replacement, $ct[1]);
$datas[$key]=implode(']]>',$ct);
} else {
$datas[$key] = preg_replace ($pattern, $replacement, $cdt);
}
}
$raw_flux=implode('<![CDATA[',$datas);
}