Buongiorno e buon pomeriggio a tutti,

sto realizzando un if che effettui il controllo dei caratteri inseriti in un <input type="text" /> attraverso la funzione preg_match() .

Sto notando però che alcuni caratteri, pur essendo presenti nella regEx, non vengono presi in considerazione. E quindi, in caso di TRUE , l'if non restituisce il messaggio di errore.


Vi illustro il codice:
Codice PHP:
<?php

$str 
$_POST['string'];

if (
preg_match('/[|-<>]+/'$str)) {

/* Come potete vedere, ho inserito pochi caratteri speciali. Mi sono fermato ai caratteri "<" 
 * e ">" perchè sono questi a non essere bloccati dalla regEx. I caratteri "|" e "-" invece, se 
 * presenti 1 o più volte, vengono riconosciuti e lo script riporta correttamente il messaggio
 * di errore. */

  
echo "Errore";

} else { 

   
# ..resto delle operazioni.

}

Non capisco perchè.

Nello specifico vorrei evitare l'inserimento dei seguenti caratteri: - / \ _ [ ] < > { } = ^ + * % & $ # @



Grazie a tutti.