[Resuelto] Permitir caracteres que quiera

Iniciado por SrTrp, 1 Julio 2018, 20:10 PM

0 Miembros y 1 Visitante están viendo este tema.

SrTrp

Como puedo permitir caracteres que yo quiera ejemplo números y letras y estos caracteres $#-_ pero si ponen algo como /' que detecte estaba pensando en un ciclo for ir leyendo carácter por carácter y compararlos en un arreglo que tenga los caracteres que quiero pero sería muy tardado, investigue esta función:
Código (php) [Seleccionar]

if (!preg_match("/^[0-9a-zA-Z]+$/",$_POST['campo'])) {
               
               echo "hay un carácter no valido";
        }else{
echo "todo bien";
}

pero al parecer no funciona según esa función debería solo aceptar números y letras pero meto cualquier tipo de carácter y no surge nada

#!drvy

Esa función esta bien y cumple su objetivo que es detectar cualquier carácter que no sea A-Z a-z o 0-9, eso quiere decir que todo lo demás es "ilegal" incluidos los espacios. Para lo que buscas, solo tendrias que añadir el resto de caracteres:

Código (php) [Seleccionar]
if (!preg_match("/^[0-9a-zA-Z$#-_]+$/",$_POST['campo'])) {


Saludos

SrTrp

Cierto ya probe y si me funciona así ahora tengo un detalle quiero implementar muchos mas caracteres que sería así:
Código (php) [Seleccionar]

if (!preg_match("/^[0-9a-zA-Z#$%&/()?_;:.,<>+-*ªº=[]{}¿!ç\'~]+$/",$_POST['campo'])) {

pero al momento que lo corro me da esa alvertencia quite unos caracteres ()'[] por si afectaban pero no siguio dandome esa alvertencia.. alguna idea?

Warning: preg_match(): Unknown modifier '(' in C:\...dircion.. on line N

#!drvy

Eso es porque en REGEX (que es lo que estas usando), algunos caracteres son especiales. Dichos caracteres los has de escapar con \ (barra invertida).

Código (php) [Seleccionar]
if (!preg_match("/^[0-9a-zA-Z#$%&\/\(\)\?_;:\.,<>\+\-*ªº\=\[\]\{\}¿!ç\\'~]+$/",$_POST['campo'])) {

Saludos

SrTrp

 ;-) ;-) ;-) muchísimas gracias me ah servido.