web-dev-qa-db-fra.com

Comment vérifier si une chaîne php ne contient que des lettres et des chiffres anglais?

En JS j'ai utilisé ce code:

if(string.match(/[^A-Za-z0-9]+/))

mais je ne sais pas comment faire en PHP.

44
Danny Fox

Utilisez preg_match () .

if (!preg_match('/[^A-Za-z0-9]/', $string)) // '/[^a-z\d]/i' should also work.
{
  // string contains only english letters & digits
}
74
Frosty Z
if(ctype_alnum($string)) {
    echo "String contains only letters and numbers.";
}
else {
    echo "String doesn't contain only letters and numbers.";
}
25
vineeth

Vous pouvez utiliser preg_match () function par exemple.

if (preg_match('/[^A-Za-z0-9]+/', $str))
{
  // ok...
}
9
evilone

Regardez ce raccourci

if(!preg_match('/[^\W_ ] /',$string)) {

}

le class [^\W_] correspond à toute lettre ou chiffre mais pas le trait de soulignement. Et notez le symbole !. Cela vous évitera d'analyser toute la saisie de l'utilisateur. 

6
kushalvm
if(preg_match('/[^A-Za-z0-9]+/', $str)) {
    // ...
}
5
Vitamin

si vous devez vérifier si c'est anglais ou non. vous pouvez utiliser la fonction ci-dessous. pourrait aider quelqu'un ..

function is_english($str)
{
    if (strlen($str) != strlen(utf8_decode($str))) {
        return false;
    } else {
        return true;
    }
}
2
shakee93
if (preg_match('/^[\w\s?]+$/si', $string)) {
    // input text is just English or Numeric or space
}
0
Ramin Rabiee

PHP peut comparer une chaîne à une expression régulière en utilisant preg_match(regex, string) comme ceci:

if (!preg_match('/[^A-Za-z0-9]+/', $string)) {
    // $string contains only English letters and digits
}
0
Saurabh