¡¡Muchas gracias por la atención cluster!!
Acabo de descubrir el fallo:
Código PHP:
$cuerpo=ereg_replace("<[^>]((\?{1,})[^>]*>)","",$cuerpo);
Decía con el primer [^>] que después de < tenía que haber algo distinto a >, y eso se saltaba la ?, ya que después del caracter siguiente a < no había ninguna ?.
Ese era el fallo, por si alguien estaba pensando el problema.
Hasta la próxima.