2010-08-05 20 views
14

Desidero disabilitare alcuni input UTF-8 (lato server), ad es. lingue orientali, dove l'input di esempio potrebbe essere "伊".Come posso rilevare caratteri non occidentali?

Comunque, io voglio continuare a sostenere gli altri caratteri latini o "latino-like", come la w gallese e Y, così checking against latin-1 is not possible.

Quali sono le mie opzioni? (se la lingua specifica, PHP preferito)

Grazie mille.


Ragionamento: il supporto del browser per un sacco di caratteri non occidentali è spesso manca (per esempio su un browser diverso Ho appena vedere una scatola nella domanda precedente), quindi per cose come i nomi visualizzati a volte è opportuno limitare anche se non è appropriato per il corpo dei messaggi

+2

Ti spiace se chiedo il motivo per cui non si desidera consentire alcune lingue su un sito internazionalizzata? – Borealid

+0

Domanda giusta. È solo necessario per un campo di un tavolo; il resto del sito Web lo supporterà. – HoboBen

+2

Quindi qual è il sottoinsieme di caratteri che stai permettendo? Si adatta ad un set di caratteri esistente? Se è così, puoi semplicemente 'iconv' la stringa per la codifica di destinazione, scartando tutti i caratteri non validi. – deceze

risposta

30

Basta fare

preg_match('/[^\\p{Common}\\p{Latin}]/u', $string) 

dove $string è una stringa UTF-8. Questo restituirà "1" se ci sono caratteri non latini e restituirà "0" in caso contrario.

Esempio:

var_dump(preg_match('/[^\\p{Common}\\p{Latin}]/u', 'sf..ŷaás??')); //int(0) 
var_dump(preg_match('/[^\\p{Common}\\p{Latin}]/u', 'sf..ŷݤaás??')); //int(1) 
+0

Sembra utile! +1 – alex

+0

Funziona alla grande, grazie v. Molto! – HoboBen

+0

C'è un elenco di subpattern nominati ovunque? – HoboBen

Problemi correlati