Foros del Web » Programando para Internet » PHP »

Duda con expresion regular

Estas en el tema de Duda con expresion regular en el foro de PHP en Foros del Web. Gente... Tengo lo siguiente. $cadena = '<div>holamundo <span class="estilo">hola</span> holamundo</div>'; Necesito sacar lo resaltado. He probado en regex la siguiente expresión regular: <span[^>]*>(.*?)</span> Y me ...
  #1 (permalink)  
Antiguo 08/01/2012, 21:11
 
Fecha de Ingreso: mayo-2003
Mensajes: 312
Antigüedad: 21 años, 5 meses
Puntos: 2
Duda con expresion regular

Gente...
Tengo lo siguiente.

$cadena = '<div>holamundo<span class="estilo">hola</span>holamundo</div>';

Necesito sacar lo resaltado.
He probado en regex la siguiente expresión regular: <span[^>]*>(.*?)</span>

Y me la toma como bien, sin embargo, cuando uso la función:

// Reemplaza por nada la subcadena
$cadena = preg_replace('/<span[^>]*>(.*?)</span>/',' ', $cadena);

NO ME FUNCIONA. ¿Alguno me podría dar una mano?
MIL GRACIAS!
  #2 (permalink)  
Antiguo 09/01/2012, 01:28
 
Fecha de Ingreso: septiembre-2007
Ubicación: PyRoot
Mensajes: 1.515
Antigüedad: 17 años, 2 meses
Puntos: 188
Respuesta: Duda con expresion regular

eso es así:

Código PHP:
Ver original
  1. $pattern = "/<span(.*)?>(.*)?</span>/i";

saludos
__________________
Si quieres agradecer el triangulo obscuro de la parte derecha debes presionar +.
  #3 (permalink)  
Antiguo 10/01/2012, 07:39
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: Duda con expresion regular

Cita:
Iniciado por Dago Ver Mensaje
Gente...
Tengo lo siguiente.

$cadena = '<div>holamundo<span class="estilo">hola</span>holamundo</div>';

Necesito sacar lo resaltado.
He probado en regex la siguiente expresión regular: <span[^>]*>(.*?)</span>

Y me la toma como bien, sin embargo, cuando uso la función:

// Reemplaza por nada la subcadena
$cadena = preg_replace('/<span[^>]*>(.*?)</span>/',' ', $cadena);

NO ME FUNCIONA. ¿Alguno me podría dar una mano?
MIL GRACIAS!
Tenes que tener cuidado al usar expresiones regulares ya que vos necesitas reemplazar una cadena de string es decir que lo que pongas en el needle tiene que ir entre comillas dobles, no en simples como lo pusiste vos. las simples son para caracteres unicos.
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #4 (permalink)  
Antiguo 10/01/2012, 11:44
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 13 años, 4 meses
Puntos: 793
Respuesta: Duda con expresion regular

Cita:
Iniciado por linuxzero Ver Mensaje
Tenes que tener cuidado al usar expresiones regulares ya que vos necesitas reemplazar una cadena de string es decir que lo que pongas en el needle tiene que ir entre comillas dobles, no en simples como lo pusiste vos. las simples son para caracteres unicos.
Tienes alguna fuente de tal afirmación? Osea que este código no funciona? Una cadena no es un string? caracteres únicos?

Código PHP:
Ver original
  1. <?php
  2. $cadena = '<div>holamundo<span class="estilo">hola</span>holamundo</div>';
  3. echo preg_replace('@<span(.*)?>(.*)?</span>@i', '', $cadena);

Si puedes explica mejor.

Saludos.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #5 (permalink)  
Antiguo 10/01/2012, 11:46
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Duda con expresion regular

Cita:
Iniciado por linuxzero Ver Mensaje
Tenes que tener cuidado al usar expresiones regulares ya que vos necesitas reemplazar una cadena de string es decir que lo que pongas en el needle tiene que ir entre comillas dobles, no en simples como lo pusiste vos. las simples son para caracteres unicos.
Yo también exijo un argumento sólido, no puede ser que todo este tiempo que llevo haciendo RegExp haya vivido equivocado.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 10/01/2012, 11:49
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: Duda con expresion regular

En php te va a funcionar lo de las comillas simples, te lo avisaba porque en otros lenguajes no es lo mismo como java por ejemplo, puede que haya hilado fino por ese tema. Pero te va a funcionar tanto con dobles como simples en la expresion regular. Ami me funciono esto:

Un ejemplo practico donde no podes utilizar comillas simples seria por ejemplo si necesitas parsear el \n necesitas utilizar comillas dobles.

Código PHP:
Ver original
  1. <?php
  2. $cadena = '<div>holamundo<span class="estilo">hola</span>holamundo</div>';
  3. echo preg_replace('@<span(.*)?>(.*)?</span>@i', '', $cadena);
  4. ?>
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Etiquetas: expresion, regular
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 14:46.