Problema funcion ereg

Hola.

Tengo un problema con esta funcion:

if (!ereg("[a-zA0-Z9]$",$_POST)){

Lo que quiero que en un campo llamado direccion me detecte el error cuando no introduzca ni nombres ni numeros ni estos caracteres ººª\/, pero si cuando introduzca esto que me de error $%$·

Saludos.
yo tengo un scritp que no permite espacios en blanco
pero.. si permite cualquier caracter

no se si te sirva

<input name="email" type="text" id="email" maxlength="20" onChange="javascript:while(''+this.value.charAt(0)==' ')this.value=this.value.substring(1,this.value.length);"/>

saludos
Es que lo que necesito es cuando se escriba por ejemplo una direccion que normalmente se introduce una calle\ Pable Nº6 portal 2ª entonces si escribimos alguno de esos caracteres que no detecte el error pero cuando se introduzca lo mismo de antes pero con algun signo como por ejemplo ()%$ imaginate que si escribimos calle\ Pable N%6 portal 2ª aqui en este deberia dar error.

Espero que me puedas ayudar.

Saludos.
Intenta ésto, a ver si sirve:



if (preg_match('*^(\w|\s|º|ª|\\|/)+$',$_POST[direccion]) == 0 ){
No me funciona lo acabo de probar y me da este error Warning: preg_match() [function.preg-match]: No ending delimiter '*' found in /homepages/25/d225968270/htdocs/enlaces-

Gracias por contestar haber si entre los dos lo podemos remediar este error.

Saludos.

Naguissa escribió:Intenta ésto, a ver si sirve:



if (preg_match('*^(\w|\s|º|ª|\\|/)+$',$_POST[direccion]) == 0 ){
Al picar se me había colado un asterisco:

if (preg_match('^(\w|\s|º|ª|\\|/)+$',$_POST[direccion]) == 0 ){ 
Hola Naguisa.

Lo acabo de probar pero da este error Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /homepages/25/d225968270/htdocs/enlaces-sponsors.php on line 174

He estado probando con esto if (!ereg('^(\w|\s|º|ª|\\|/)+$',$_POST) == 0 ){

pero si me detecta ºª y no \ / y asi como lo tengo puesto no me da ningun error pero no funciona.

Y otra cosa deberia funcionar con letras y numeros.

Haber que tal lo ves.

Saludos.

Naguissa escribió:Al picar se me había colado un asterisco:

if (preg_match('^(\w|\s|º|ª|\\|/)+$',$_POST[direccion]) == 0 ){ 
Estoy un poco espeso...
Prueba estos dos, ambos deberían funcionar:

 if (preg_match("^(\\w|\\s|º|ª|\\\\|\\/)+$",$_POST[direccion]) == 0 ){ 

 if (preg_match("/^(\\w|\\s|º|ª|\\\\|\\/)+$/",$_POST[direccion]) == 0 ){ 
Hola Naguisa.

Estado probando los dos script pero no se que pasa que en mi servidor a usar la funcion preg_match siempre da error, he estado investigando este codigo:

 if (!ereg("^(\\w|\\s|º|ª|\\\\|\\/)+$",$_POST[direccion]) == 0 ){

Con este codigo me lo detecta si escribo ª º \ / me da ese error y si solo escribo texto no me da error hasta ahi esta bien, pero esta funcion tendria que funcionar al reves, por que si escribo distintos a estos signos que me de error y no es asi, fijate en el ! que si es distinto a esto que me de ese error y no se porque funciona asi.

 if (ereg("^(\\w|\\s|º|ª|\\\\|\\/)+$",$_POST[direccion]) == 0 ){

He estado probando este codigo le quitado el ! y funciona bastante bien pero no del todo, cuando escribo letras me da error y no deberia ser asi, pero cuando escribo distintos a estos caracteres da error y cuando escribo iguales no me da error, lo unico para terminar esta funcion es cuando escriba numeros y letras que no me de error.


Saludos.




Naguissa escribió:Estoy un poco espeso...
Prueba estos dos, ambos deberían funcionar:

 if (preg_match("^(\\w|\\s|º|ª|\\\\|\\/)+$",$_POST[direccion]) == 0 ){ 

 if (preg_match("/^(\\w|\\s|º|ª|\\\\|\\/)+$/",$_POST[direccion]) == 0 ){ 
Por lo que he visto, el \\w, que concuerda con "palabras", no reconoce los acentos. Así, tendrás que hacerlo manualmente:

if ( ereg('/^[a-zA-Zºª\\/ ]+$/',$_POST[direccion])  == 0 ){
ERROR
} else {
CORRECTO
}

Detrás de ºª deberás añadir los símbolos permitidos (y las tildes!).

Lo que hacemos es pedir que sean:
a-z
A-Z
símbolos
espacio (cuidado, ha de estar!)
1 o mas veces

Con comillas simples no necesitamos escapar el \
pero como / es un carácter reservado de las regex, lo escapamos / --> \/



Otra opción mas permisiva sería hacerlo al revés, solo ponber los símbolos "prohibidos".
Estado probando el codigo pero no va lo he probando de bastantes maneras, es que la manera que quieres tu manejar la funcion no me valdria, para que te hagas una idea aqui tiene mas codigo:

if (!ereg('/^[a-zA-Zºª\\/ ]+$/',$_POST[direccion])  == 0 ){ 
$error3 = "<font face=Verdana, Arial, Helvetica, sans-serif size='1' color='#CC3300'><font face=Verdana, Arial, Helvetica, sans-serif size='1' color='#CC3300'> En este campo no permite estos caracteres /()</font>";
$error_cruz3 = "<img src='http://www.nose.es/jpg/advertencia-errores.jpg'";
function comprobar_apellidos_caracteres_menos_3($apellidos_caracteres_menos_3){
return (false);
}
}
else{

Si te das cuenta este pequeño se prolonga de este modo con campo nombre, campo apellido, campo provincia y localidad y ect.

Haber que opinas.

Saludos y gracias por tu ayuda.
No consigo con el codigo que me distes estos poniendo los simbolos pero no funciona bien, algo falla beuno Naguisa me podria eschar una mano.

Saludos.