En las variables post o get los valores son cadenas o cadenas, jamás números o booleanos, estas cadenas pueden contener números por lo tanto is_numeric podría validar perfectamente
Es por esto que is_string() no sirve, ya que siempre será cadena, aunque se ingresen números
No es intención de ser troll ni nada, solo digo las cosas como son,
Curda Wins