Buenas,
Siempre me pasa igual, escribo un post de un problema que me lleva días y en 10 minutos lo averiguo... sois mi inspiración
Por si a alguien le pasa, el problema estaba en que la variable que se envía por Ajax, ya se envía cortada, por lo tanto en PHP es imposible reemplazar nada.
Hay que reemplazar el & o el carácter necesario, antes de enviarlo por Ajax.
Por ejemplo:
string = string.replace ("&", "%26");
y luego ejecutar el Ajax.
Espero que os sirva de ayuda :)
Saludos!