Foros del Web » Programando para Internet » PHP »

Utilizar sustitucion de expresiones regulares por negacion ¿es posible?

Estas en el tema de Utilizar sustitucion de expresiones regulares por negacion ¿es posible? en el foro de PHP en Foros del Web. Hola a todos. Tengo el siguiente caso: Código: <?php $cadena = 'NOMBRE&&/ DE LA %%EMPRESA,/ S,L.'; $patrones[0] = '[^a-zA-Z0-9/._-]'; $reemplazos[0] = ''; echo preg_replace($patrones, $reemplazos, ...
  #1 (permalink)  
Antiguo 13/05/2009, 06:12
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 65
Antigüedad: 21 años
Puntos: 2
Utilizar sustitucion de expresiones regulares por negacion ¿es posible?

Hola a todos.

Tengo el siguiente caso:

Código:
<?php
$cadena = 'NOMBRE&&/ DE LA %%EMPRESA,/ S,L.';
$patrones[0] = '[^a-zA-Z0-9/._-]';
$reemplazos[0] = '';
echo preg_replace($patrones, $reemplazos, $cadena);
?>
Mi "Descabellada" intencion es eliminar de la cadena todo lo que no sean caracteres alfanumericos, el "." el "_" y el "-" esto lo hago para validar nombres de empresa en un formulario de capatacion de datos!!

TAMPOCO ES QUE SEA MUY HABIL CON LAS EXPRESIONES REGULARES.

Pero una vez qu me plantee el problema, me he puesto a buscar y lo que no se es si estas ocurrencias de la funcion preg_replace pueden ser por negacion.

tambien he probado:

Código:
echo preg_replace("[^a]", " ", $cadena);
que ¿debería? eliminar de la cadena todo lo que no sean "a" pero tampoco va.

Por lo que no se si debo o no escribir este post pues al parecer quiero utilizar la funcion para algo que no hace pero ya que lo he hecho aqui les va!

En cualquier caso si me pueden orientar la respecto.!

Gracias de antemano!
  #2 (permalink)  
Antiguo 13/05/2009, 11:32
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Utilizar sustitucion de expresiones regulares por negacion ¿es posible?

No te van, por que estas haciendo mal las expresiones...

NOTA que preg_* necesita expresiones con separadores:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/

También, debes saber que los meta-caracteres se deben escapar con la barra invertida \ no con la normal!
Código:
/[^a-zA-Z0-9\._-]/

Código PHP:
echo preg_replace('/[^a]/''''aeiou'); 
De ahí en fuera, estas en lo correcto, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 13/05/2009 a las 11:39
  #3 (permalink)  
Antiguo 13/05/2009, 11:37
 
Fecha de Ingreso: septiembre-2004
Mensajes: 324
Antigüedad: 19 años, 7 meses
Puntos: 13
Respuesta: Utilizar sustitucion de expresiones regulares por negacion ¿es posible?

Pues usa str_replace y terminas antes
  #4 (permalink)  
Antiguo 13/05/2009, 12:38
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 65
Antigüedad: 21 años
Puntos: 2
Respuesta: Utilizar sustitucion de expresiones regulares por negacion ¿es posible?

Hola pateketrueke!

Gracias por la solucion ahora mismo lo pruebo.

Soy bastante novato en el tema de las expresiones regulares.

karliky

conozco el str_replace pero segun se (que no es mucho) a esta funcion tengo que decirle que remmplace tal caracter "a" por tal otro "b" o puedo decirle que busque expresiones regulares.

Saludos a mabos voy a probar a ver que passa!!!

Ya les cuento.
  #5 (permalink)  
Antiguo 13/05/2009, 12:41
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 65
Antigüedad: 21 años
Puntos: 2
Respuesta: Utilizar sustitucion de expresiones regulares por negacion ¿es posible?

Pateketrueke

Tu recomendacion va de miedo o para decirlo decentemente "cojonudo ya rula!!!!!"

Gracias miles.

Se me olvidaba al final quedo así:


Código PHP:
<?php
$cadena 
trim('NOMBRE&&/ DE LA %%EMPRESA,&&&/ S,L.');
$patrones[0] = '/[^a-zA-Z0-9 \._-]/';
$reemplazos[0] = '';
echo 
trim(preg_replace($patrones$reemplazos$cadena));

//Salida: NOMBRE DE LA EMPRESA SL.
?>
He incluido un espacio despues del nueve porque tal y como estaba me eliminaba los espacio en blanco tambien.

He incluido ademas un trim por fuera de la funcion preg_replace para eliminar los espacios en blanco al inicio y final de la cadena.

Gracias de nuevo.
DUN

Última edición por dunblanco; 13/05/2009 a las 12:49
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 20:57.