2017-03-27 1 views
-2

ich brauche Text in PHP zu überprüfen und erlauben nur Englischphp Check Text nur Englisch erlaubt und andere Sprache nicht erlaubt

mein Code:

Sollte entsprechen:

Gautier-, [email protected]#$%^&*()_+|';?>< A.; R.; Falcs, J.M; 

Sollte nicht übereinstimmen:

Problem dojrzałościmałżeństwa"; // not allowed 
book for محمد taj 
Еос ферри 

Code:

if (! preg_match('/^[a-z0-9 .\-]+$/i', $string)) 
{ 
    echo "Not allowed"; 
} 

Aber nicht

+2

Was „nicht erlaubt nur Englisch "haben mit der Begrenzung der Menge von möglichen Zeichen zu tun? Dieser Ansatz ist ziemlich naiv (perfektes englisches Wort), oder, wie wir vielleicht auf Deutsch sagen würden, "Dumm wie Brot" - welche Charaktere würden Sie nun einschränken wollen, um _das_ ... auszuschließen? – CBroe

+0

Das polnische Wort "tlen" (und viele andere) umfasst nur ASCII-Buchstaben, kein Regex wird Ihnen sagen, dass es kein Englisch ist. Es ist eine Aufgabe für NLP, Sprachratenalgorithmen. Um nur zu prüfen, ob ein String nur aus ASCII-Zeichen besteht, verwenden Sie '^ [[: ascii:]] + $'. –

+0

Siehe http://stackoverflow.com/questions/24903140/regex-for-any-english-ascii-character-including-special-characters –

Antwort

1

Mit dieser Arbeit:

if (!preg_match('/^[a-z0-9 .}, [email protected]#$%^&*()_+|\';?><-]+$/i', $string)) 
{ 
    // commands 
} 
+0

Das stimmt nicht mit dem ersten Beispiel überein. – Toto

+0

'if (! Preg_match ('%^[- ~] + $%', $ string)) { echo" Nicht erlaubt "; } 'es hat funktioniert! –

1

einfach die Sonderzeichen in der Zeichenklasse hinzu:

if (! preg_match('/^[a-z0-9 .}, [email protected]#$%^&*()_+|\';?><-]+$/i', $string)) { 
    echo "Not allowed"; 
} 
Verwandte Themen