Hola, lo que se puede hacer en ese caso es primero usar condicionales para saber el tipo de valor y luego realizar la operación de una u otra forma según el valor recibido.
De todas maneras como vos querés obtener los primeros caracteres que sean justamente eso mismo y no sólo números u otro tipo de caracter en específico, no sé si existirá una función en PHP que haga eso mismo, pero podrías crearla vos mismo, primero creas una función que reciba como parámetro el valor a obtener los primeros x caracteres y que esa función realice un bucle retornando los primeros x caracteres.
Está función puede tener como segundo parámetro la cantidad de caracteres a retornar, por ejemplo:
abecedario = "abcdefghijklmnopqrstuvwxyz";
valor = returnChar(abecedario, 7);
echo valor; // devolverá 'abcdefg'
Ahora sí se diera el caso que querés retornar x cantidad de caracteres y por ejemplo puede suceder que no sepas la longitud del valor que se va a recibir, entonces podría funcionar así la función:
nameUser = "Ana";
valor = returnChar(nameUser, 5);
echo valor; // devolverá Ana (es decir el total del valor que contiene la variable recibida porque la función va a retornar la longitud máxima que se le pide y como el valor de la variable es menor que esa longitud, entonces devuelve por supuesto todo el contenido)
Esa es otra forma de hacerlo o también como comenté usar funciones propias de PHP y de acuerdo al tipo de valor recibido tendrías que convertir ese valor a otro o usar funciones que trabajen con distintos tipos de valor para retornar sus x cantidad de caracteres.
Saludos