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:
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
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:
if (!preg_match("/^[0-9a-zA-Z$#-_]+$/",$_POST['campo'])) {
Saludos
Cierto ya probe y si me funciona así ahora tengo un detalle quiero implementar muchos mas caracteres que sería así:
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
Eso es porque en REGEX (que es lo que estas usando), algunos caracteres son especiales. Dichos caracteres los has de escapar con \ (barra invertida).
if (!preg_match("/^[0-9a-zA-Z#$%&\/\(\)\?_;:\.,<>\+\-*ªº\=\[\]\{\}¿!ç\\'~]+$/",$_POST['campo'])) {
Saludos
;-) ;-) ;-) muchísimas gracias me ah servido.