Ho sempre lottato con RegEx quindi perdonatemi se questo può sembrare un approccio terribile ad affrontare il mio problema.Accetta caratteri del nome internazionale in RegEx
Quando gli utenti entrano nomi e cognomi Ho cominciato semplicemente utilizzando il base, verificare la presenza di lettere maiuscole e minuscole, lo spazio bianco, apostrofi e trattini
if (!preg_match("/^[a-zA-Z\s'-]+$/", $name)) { // Error }
Ora mi rendo conto che non è il migliore dal le persone potrebbero avere cose come: Dr. Martin Luther King, Jr. (con virgola e punti fermi). Quindi presumo cambiandolo in questo modo lo renderei leggermente più efficace.
if (!preg_match("/^[a-zA-Z\s,.'-]+$/", $name)) { // Error }
Poi ho visto un nome di ragazze che conosco sulla mia Facebook che scrive il suo nome come Siân, che mi ha fatto pensare di nomi che contengono dieresi così come dicono i caratteri giapponesi/cinese/coreano/russo troppo. Così ho iniziato a cercare e trovato modi scrivendo ognuno di questi personaggi lì dentro così.
if (!preg_match("/^[a-zA-Z\sàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð ,.'-]+$/u", $first_name)) { // Error }
Come si può immaginare, è estremamente prolisso e sono abbastanza certo c'è una RegEx molto più semplice che può raggiungere questo obiettivo. Come ho detto, ho cercato in giro ma questo è il meglio che posso fare.
Quindi, qual è un buon modo per verificare la presenza di caratteri maiuscoli e minuscoli, virgole, punti fermi, apostrofi, hypens, dieresi, latino, giapponese/Russo ecc
Ciò NON FUNZIONERÀ a meno che non si normalizzi prima, e spesso nemmeno in quel momento. – tchrist