Zu (b):
Wenn du diese Zeile einbaust, dann bietet dir der Browser das Abspeichern an.
Code:
header('Content-Disposition: attachment; filename="sqlbackup.txt"';
Ggf. solltest du auch noch
Code:
ob_start("ob_gz_handler");
aufrufen, dann wird's komprimiert (nicht die Datei sondern die Übertragung).
Zu (a):
Das ist nicht ganz trivial, weil ja in den Werten auch diese Zeichen vorkommen können, auf die du prüfst.
Ich schreib gerade mal was ...