Martina,
You would need to "protect" the function calls from the replacement of x. I would do a temporary replacement by removing x from the function calls and return it back after setting x to zero. For example:
In[9]:= exp2 = f[x, y, z] + x^2*g[x, y, z] + x*g[x, y, z]
Out[9]= f[x, y, z] + x g[x, y, z] + x^2 g[x, y, z]
In[6]:= newexp =
exp2 /. {f[x, a_, b_] -> fx[a, b], g[x, a_, b_] -> gx[a, b]}
Out[6]= fx[y, z] + x gx[y, z] + x^2 gx[y, z]
In[8]:= newexp /. x -> 0 /. {fx[a_, b_] -> f[x, a, b],
gx[a_, b_] -> g[x, a, b]}
Out[8]= f[x, y, z]
Regards,
Neil