Hola,
is_string lo que valida es si el tipo de variable que le pasas es de tipo string. Eso quiere decir que dependiendo de como se declare la variable dará un resultado u otro.
Para que me entiendas:
1 => 'esto es un string',
2 => "esto tambien es string 123",
3 => "123456",
4 => 123456
);
foreach($var as $test){
}
El resultado de esto va a ser:
string(17) "esto es un string"
string(26) "esto tambien es string 123"
string(6) "123456"
int(123456)
Como ves, PHP y su
dynamic typing deciden que todo lo que pongas entre comillas es un string a pesar de que puedas colocar un float o un integer.
Lo mismo va para los datos obtenidos del servidor http. Todos son tipo string.
Para comprobar que una variable solo contiene letras, PHP tiene la función
ctype_alpha ->
http://php.net/manual/en/function.ctype-alpha.php die('El usuario debe contener solo letras !'); }
Eso si, ten en cuenta que solo considera caracteres [A-Za-z], es decir, ni espacio, ni números, ni símbolos, ni nada mas que letras del latín básico (otros abecedarios tampoco, para ello debes usar
set_locale) por tanto tampoco te acepta la Ç, la Ñ o palabras con acentos.
De forma similar, si quieres comprobar que tienes solo números, puedes usar
ctype_digit ->
http://php.net/manual/en/function.ctype-digit.php.
También puedes usar expresiones regulares (regex) lo cual en un principio te da algo más de poder en cuanto a que puede entrar y qué no.
$test_string = preg_match("/^[A-Za-z]+$/", $input);
Esto por ejemplo dara true (>0) si el texto solo contiene A-Za-z es decir, latín básico tanto mayúsculas como minúsculas. Es prácticamente igual al
ctype_alphaSi queremos por ejemplo que acepte la ñ y otros puedes añadirlos a la expresión:
$test_string = preg_match("/^[A-Za-zñÑçÇáéóúíÁÉÓÚÍ]+$/", $input);
Mas info sobre expresiones regulares:
http://www.regular-expressions.info/tutorial.htmlhttps://developer.mozilla.org/es/docs/Web/javascript/Guide/Regular_Expressions
La validación de formularios es una tarea bastante tediosa si se hace a mano, por eso cuando pases a usar librerias y frameworks vas a agradecerlo xD
También está la opción de usar javascript para validar los formularios,
No uses solo javascript. Recuerda que javascript se ejecuta en el lado del cliente y este tiene total libertad sobre lo que puede hacer y lo que no.. en un dado momento, podria deshabilitar por si mismo todas las validaciones si quiere.
Lo ideal es usar ambos. Se agradece mucho que no tenga que volver a introducir todos los datos si es que me he equivocado en algo (y eso con javascript se soluciona) y también se agradece no tener que esperar a que la pagina cargue para que me informe de que he tenido un error.
De todos modos, aparte de javascript tambien tienes HTML5. La mayoria de los navegadores modernos soportan tipos de campo (input) como email, numeric, date, etc.. y tambien soportan expresiones regulares.
Por ejemplo
<!-- Regex -->
<input type='text' name='usuario' pattern='[A-Za-z]' placeholder='Introduce tu usuario, solo letras.'>
<!-- Tipo de campo (solo email) -->
<input type='email' name='correo' placeholder='ejemplo@ejemplo.com'>
Si quieres saber más:
https://developer.mozilla.org/es/docs/Web/HTML/Elemento/inputSaludos