2010-06-25 3 views
1

Quelle est la meilleure façon de vérifier l'entrée, si elle contient des caractères d'autres langues. (sauf anglais)Filtrage d'entrée PHP: Alphabet anglais seulement

+1

Qu'est-ce que précisément vous signifie par des caractères d'autres langues? Voulez-vous exclure par exemple qui, bien que souvent abandonné en mots anglicisés, est utilisé en anglais tout le temps. –

+3

Cette question semble un peu naïve –

+2

"Voulez-vous exclure é par exemple qui, bien que souvent abandonné en mots anglicisés est utilisé en anglais tout le temps" oui – TheNone

Répondre

3
if (preg_match("/[^\x00-\x7F]/",$string)) { 
    // $string contains at least 
} else { 
    // $string doesn't contain any foreign characters 
} 

Cela vérifiera tout caractère qui a le code ascii supérieur à 127, parce que si elle est supérieure, ce n'est pas dans l'alphabet anglais. Le code Ascii 7 bits contient tous les caractères anglais.

Ascii Table http://www.cs.utk.edu/~pham/ascii_table.jpg source

0
$input = 'abcабв'; 
$out = array(); 
preg_match_all(
    "|[a-zA-Z]?|", 
    $input, 
    $out 
); 

$ out contiendra tous les caractères non-latins (Â).

+0

et qu'en est-il des caractères spéciaux comme '.','() ',' [] 'ou plus qui peuvent être dans une chaîne sans en faire une chaîne en langue étrangère? – jigfox

+0

oui, vous avez raison, cela ne fonctionnerait que pour des mots simples .. –

2

si cette

preg_match("/[^\x00-\x7F]/",$string) 

ne fonctionne pas (vous obtenez Pas délimiteur de fin '/' trouvé) puis essayez cette

preg_match('/[^\x00-\x7F]/',$string)