ho provato a fare come Mcgannas ma ci vorrebbe un secondo passagio:
$variabile = str_replace("&","\&",$variabile);
fin qui prende il carattere come testo normale e non particolare ma aggiunge lo slash.
$variabile = str_replace("\&","&",$variabile);
qui esce lo slash con la &(\& e compromette il nome)
quindi levo la barretta da qusta \& interpretata ora come carattere normale.