Te cuento que no comprendo por qué no te funciona, me hice un archivo php con este código:
  Código PHP:
    <?php
 function caracteresValidos($campo, $patron)
    {
    if(preg_match_all($patron, $campo, $matches)) 
        return true;
    else
        return false;
    } 
 
$coso = caracteresValidos(12345, "/^[0-9]{5,10}$/");
 
var_dump($coso);
?>    
  Y no tengo ningún error con la función, obtengo la salida de var_dump:
bool(false) 
Así que creo que deberías verificar que le estés pasando correctamente el parámetro. Quizás al llamar a la función no le estás pasando lo que deberías...  
Saludos.