2012-02-19 16 views

Respuesta

68

Use preg_match().

if (!preg_match('/[^A-Za-z0-9]/', $string)) // '/[^a-z\d]/i' should also work. 
{ 
    // string contains only english letters & digits 
} 
+4

sí. parece más eficiente. Buscar el primer carácter fuera de rango parece más sensato que escanear una cadena completa. –

+0

N.B inglés verison of above link here: http://php.net/manual/en/function.preg-match.php –

+0

Ok, he actualizado el enlace a la versión en inglés. –

8

Puede usar la función preg_match() por ejemplo.

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

Tener un vistazo a este acceso directo

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

} 

los partidos class [^\W_]cualquier letra o dígito pero no subrayan. Y tenga en cuenta el símbolo !. Le ahorrará escanear toda la entrada del usuario.

22
if(ctype_alnum($string)) { 
    echo "String contains only letters and numbers."; 
} 
else { 
    echo "String doesn't contain only letters and numbers."; 
} 
+0

No estoy seguro de por qué las personas no votan la función ctype. No puedo crear imágenes. Existe un problema de rendimiento con el rango de funciones ctype. –

+0

ctype_alnum dependen de la configuración regional, por lo que podría no funcionar como lo desees. – thethakuri

1

si necesita comprobar si es inglés o no. podrías usar la función de abajo podría ayudar a alguien ..

function is_english($str) 
{ 
    if (strlen($str) != strlen(utf8_decode($str))) { 
     return false; 
    } else { 
     return true; 
    } 
} 
0

PHP puede comparar una cadena con una expresión regular usando preg_match(regex, string) así:

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