printing variables in formated text?

One viable approach might be to do something like the following:

void putline(unsigned fmt,...)
{  static char format[MAXFMT];
   static char buffer[MAXLIN];

   /* Retrieve format string fmt from FLASH into 'format' */

   /* Assemble print line in 'buffer' */

   Serial.println(buffer);
}

if you made '#' the substitution character, fmt == 0 corresponds to
"

The phone number of # is #

", name = "John Smith", and phone = "123-456-7890", then the call

putline(0,name,phone);

would result in retrieving the appropriate format string, performing the two substitutions, and outputting the text line you want, ie:

The phone number of John Smith is 123-456-7890