voglio consentire esclusivamente (_) e (-).

Io prensavo così:

Codice PHP:
$user "stringa qualunque";

$num1 strlen(str_replace("%","",$user));
$num2 strlen(str_replace("$","",$user));
$num3 strlen(str_replace("\","",$user));
$numn = strlen(str_replace..........;

if(
$num1 != strlen($user)) || $num2 != strlen($user) || $num3 != strlen($user)){
echo "
mi dispiace caratteri non validi";

così funziona.

Però pensavo ci fosse una scorciatoia.
E poi ci sono comunque dei carateeri sconosciuti che vorrei evitare fossero inseriti.
Come @, ç, #...insomma ce ne sono tanti.