preg_match('/^[a-zA-Z0-9 !"#%\'()*+,-./:;<=>?@\\^_\'{|}~àèìòù]+$/i',$testo)

Hai ragione, quello era un errore, in realtà nel codice lo avevo già corretto. C'è qualcos'altro che non va.
Comunque l'errore è Unknown modifier ':'