Sorry, kleine Korrektur:
preg_replace ist sicherlich die richtige Methode.
preg_replace("/(&[^amp;])/","&",$string);
bedeutet:
Ersetze alle & plus das folgende Zeichen (genau eines) mit & - allerdings nur jene & plus folgendes Zeichen, die nicht &a &m &p oder &; sind.
Denn die Klammern [] umschließen immer eine Zeichenmenge in regulären Ausdrücken.