Foros del Web » Programando para Internet » PHP »

Problema con Regex

Estas en el tema de Problema con Regex en el foro de PHP en Foros del Web. Buenas! Por mucho que trasteo con expresiones regulares no consigo hacer una cosa, tengo varias cadenas con un patrón, este: $string = "texto abc xyz ...
  #1 (permalink)  
Antiguo 14/06/2011, 14:09
Avatar de Nazari  
Fecha de Ingreso: febrero-2010
Ubicación: Canarias - Tenerife
Mensajes: 62
Antigüedad: 14 años, 9 meses
Puntos: 7
Problema con Regex

Buenas! Por mucho que trasteo con expresiones regulares no consigo hacer una cosa,
tengo varias cadenas con un patrón, este:

$string = "texto abc xyz + texto";

$string2 = "texto tre bye - texto";

y así diferentes cadenas con ese mismo patrón, y lo que quiero es coger el símbolo y dejarlo en el medio, de "abc xyz" de esta forma "tre - bye" para eso primero localizo mediante expresiones regulares el patrón, pero no se como hacer la otra parte :S Regex no es mi fuerte.

¿Alguien se le ocurre una forma de hacerlo?

Un Saludo
__________________
Nazarí González
http://www.nazariglez.com - @Nazariglez
  #2 (permalink)  
Antiguo 14/06/2011, 14:24
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 15 años, 1 mes
Puntos: 334
Respuesta: Problema con Regex

no se entiende... o porlomenos yo no entendi..
pone un ejemplo de como deberia quedar ?
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 14/06/2011, 14:40
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 14 años, 1 mes
Puntos: 511
Respuesta: Problema con Regex

Si tus variables tienen la misma estructuta puedes separarlas por medio de la funcion explode y manipularlas a tu gusto ejemplo.


Código PHP:
Ver original
  1. <?php
  2.  
  3. $string = "texto abc xyz + texto";
  4. list($tex1, $text2, $text3, $signo, $text4) = explode (' ', $string);
  5.  
  6. echo $text1,'<br>';
  7. echo $text2,'<br>';
  8. echo $text3,'<br>';
  9. echo $text4,'<br>';
  10. echo $signo,'<br>';
  11.  
  12. ?>

y obtendras como resultado

texto
abc
xyz
texto
+

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #4 (permalink)  
Antiguo 14/06/2011, 15:20
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 8 meses
Puntos: 336
Respuesta: Problema con Regex

tienen siempre el mismo largo?

(me gusta mas la opción de skiper0125)

yo lo habría hecho así:

Código PHP:
Ver original
  1. <?php
  2. $string = "texto abc xyz + texto";
  3. echo substr($string,0,10).substr($string,14,1).substr($string,9,5).substr($string,15);
  4. ?>
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #5 (permalink)  
Antiguo 15/06/2011, 16:07
Avatar de Nazari  
Fecha de Ingreso: febrero-2010
Ubicación: Canarias - Tenerife
Mensajes: 62
Antigüedad: 14 años, 9 meses
Puntos: 7
Respuesta: Problema con Regex

Hmmm no, el problema precisamente es que no tienen ni la misma estructura ni la misma longitud, son variables, solo se cumple el patrón por eso pensé en regex. Muchas gracias a los tres
__________________
Nazarí González
http://www.nazariglez.com - @Nazariglez
  #6 (permalink)  
Antiguo 15/06/2011, 16:18
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: Problema con Regex

Si, yo separaría las palabras por espacios, o por símbolos usando regex.

Iteraba los símbolos, y comparando, etc...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: expresiones, regex, sustituir
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 21:16.