Foros del Web » Programación para mayores de 30 ;) » RegExp »

Cualquier cosa que NO SEA un crácter: \W (excepto el punto) ¿cómo?

Estas en el tema de Cualquier cosa que NO SEA un crácter: \W (excepto el punto) ¿cómo? en el foro de RegExp en Foros del Web. Hola. la línea preg_replace('/\W/', '-', $var reemplazará todo lo que no sea un carácter por un guión medio. Cómo la modifico para que permita el ...
  #1 (permalink)  
Antiguo 18/07/2014, 09:04
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Cualquier cosa que NO SEA un crácter: \W (excepto el punto) ¿cómo?

Hola.

la línea

preg_replace('/\W/', '-', $var

reemplazará todo lo que no sea un carácter por un guión medio.

Cómo la modifico para que permita el púnto y el carácter guión bájo ?
  #2 (permalink)  
Antiguo 18/07/2014, 10:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cualquier cosa que NO SEA un crácter: \W (excepto el punto) ¿cómo?

Para ese caso debes evitar usar \W y ser más explícito así:
Cita:
[^\w.]
Eso significaría "todo lo que no sea un carácter (válido dentro del rango [a-zA-Z0-9_]) o punto (se toma literal dentro de los corchetes)".

Consulta una referencia al respecto para comprender más acerca de negaciones, grupos y meta caracteres.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 10/08/2014, 21:56
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Cualquier cosa que NO SEA un crácter: \W (excepto el punto) ¿cómo?

Gracias.

Me ha servido de mucho...
  #4 (permalink)  
Antiguo 10/08/2014, 21:59
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Cualquier cosa que NO SEA un crácter: \W (excepto el punto) ¿cómo?

Cita:
Iniciado por pateketrueke Ver Mensaje
Para ese caso debes evitar usar \W y ser más explícito así:
Disculpa pero al utilizarlo de ésa manera me remueve letras y me conserva carácteres que no debería:
Código PHP:
$str 'asd.com y AQQ AAA BBB 123lkj987 sss-www_fff:::.ñ{}{¿"#$%&/xxxxxx0zzzz,,,pol';
$str preg_replace('/[^\W\.-_]/'''$str);
echo 
$str
¿que hago másl?
  #5 (permalink)  
Antiguo 10/08/2014, 22:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Cualquier cosa que NO SEA un crácter: \W (excepto el punto) ¿cómo?

Nota que mi ejemplo usa la w minúscula y no mayúscula, hay una gran diferencia.

\w todo lo que sea alfanumérico
\W todo lo que NO sea alfanumérico
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 11/08/2014, 06:34
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 2 meses
Puntos: 22
Respuesta: Cualquier cosa que NO SEA un crácter: \W (excepto el punto) ¿cómo?

Cita:
Iniciado por pateketrueke Ver Mensaje
Nota que mi ejemplo usa la w minúscula
Ouch!...

Creí que se trataba de una MAYUS y que el punto tenía que dejarse como tu lo tienes.

Por éso no me funcionaba y desesperé...

Ahora sí me vá:
Código PHP:
        echo preg_replace('/[^\w\.-]/i'''$str); 
Grácias por tu paciencia Pateketrueke.

Etiquetas: excepto, php, punto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:38.