Ja, in dem Fall würde ich auch besser die Funktion als Inhalt einer Variablen aufrufen.
Wenn Du den Funktionen dann einen Präfix gibst, mit dem nirgend wo anders in Deinem Skript oder in PHP selbst eine Funktion beginnt, solltest Du relativ sicher sein.
Das heißt also, Du solltest nochmal genau überprüfen, ob irgendeine Funktion, außer Deinen, mit "check_" beginnt.
Probleme könnte noch Folgendes verursachen:
Was passiert, wenn der User etwas einschleust, so dass die Funktion nicht existiert?
Das ließe sich umgehen, wenn Du auf Existenz der Funktion prüfst und dann mit "und" den Aufruf der Funktion anhängst.
Was jedoch, wenn der User es schafft, die Kontrolle zu manipulieren, indem er dafür sorgt, dass statt E-Mail die Länge geprüft wird?
Es ist auf jeden Fall sicherer, als eval, aber ebenso, wie das $$-Konstrukt sind alle diese höchstdynamischen Möglichkeiten, die PHP bietet, potenzielle Gefahren.
Gruß hpvw