Foros del Web » Programando para Internet » PHP »

Problema con split

Estas en el tema de Problema con split en el foro de PHP en Foros del Web. Buenas, yo tengo un texto que digamos es así: Código: 11:00 Tenis: Nadal vs Federer (11:00-11:45) 12:00 Practicar: Futbol (12:00-13:00) Yo necesitaría obtener solo Nadal ...
  #1 (permalink)  
Antiguo 29/05/2009, 08:12
 
Fecha de Ingreso: marzo-2009
Mensajes: 164
Antigüedad: 15 años, 8 meses
Puntos: 1
Problema con split

Buenas, yo tengo un texto que digamos es así:
Código:
11:00 Tenis: Nadal vs Federer (11:00-11:45)
12:00 Practicar: Futbol (12:00-13:00)
Yo necesitaría obtener solo Nadal vs Federer de todo el texto y introducirlo en una variable, es decir obtener "los participantes del evento tenis" he probado con split pero no lo entiendo mucho... ¿Alguna forma de hacerlo?
Thanks
  #2 (permalink)  
Antiguo 29/05/2009, 08:33
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: Problema con split

Yo haria asì
Código PHP:
$text "11:00 Tenis: Nadal vs Federer (11:00-11:45)";
$reg_exp "/[0-9]+:[0-9]+\s\w+:\s([\w ]+)\(/";
preg_match_all($reg_exp$text$linesPREG_SET_ORDER);
echo 
$lines[0][1]; 
Eso con uno, si $text contiene todas las lineas bien, los resultados estan en $lines[$i][1] donde $i varia.
Chao!
  #3 (permalink)  
Antiguo 29/05/2009, 08:42
 
Fecha de Ingreso: marzo-2009
Mensajes: 164
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Problema con split

... $text no es igual a "11:00 Tenis: Nadal vs Federer (11:00-11:45)" es igual a "11:00 Tenis: Nadal vs Federer (11:00-11:45)
12:00 Practicar: Futbol (12:00-13:00)"
  #4 (permalink)  
Antiguo 29/05/2009, 08:52
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: Problema con split

Ya te di la respuesta
Código PHP:
// $text = "tambien miliones de lineas como la de antes"
$reg_exp "/[0-9]+:[0-9]+\s\w+:\s([\w ]+)\([^\)]+\)/";   // todavia mas precisa
preg_match_all($reg_exp$text$linesPREG_SET_ORDER);
$i=1;
foreach(
$lines as $line) {
   echo 
$i." resultado: ".$line[1];
   
$i++;

Ahora esta bien?
Chao!
  #5 (permalink)  
Antiguo 29/05/2009, 09:18
 
Fecha de Ingreso: marzo-2009
Mensajes: 164
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Problema con split

OK, pero me podrías esplicar el código? Lo de $reg_exp y la funcion preg_match_all
  #6 (permalink)  
Antiguo 29/05/2009, 09:32
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: Problema con split

Claro tio!
Utilizo las expresiones regulares, mas informacion las puedes encontrar en regular-expressions.info (no puedo poner link)...

$reg_exp = "/[0-9]+:[0-9]+\s\w+:\s([\w ]+)\([^\)]+\)/";

esta es una regular expression que busca una stringa echa asi'

- uno o mas caracteres que son numeros -> [0-9]+ //11
- seguidos de el caracter : //:
- seguido de uno o mas caracteres que son numeros -> [0-9]+ //00
- seguidos de uno espacio -> \s
- seguido de uno o mas caracteres que son letras -> \w+ //Tenis
- seguidos del caracter : //:
- seguido de un espacio -> \s
- seguido de un grupo que buscamos, por eso las parentesis, que comprende uno o mas caracteres entre letras y espacio -> [\w ]+ //Nadal vs Federer
- seguido de una parentesis -> \(
- seguida da uno o mas caracteres cualquieras pero fiferentes de ) -> [^\)]+ //11:00-11:45
- seguidos de )

ok, la funccion preg_match_all exec la regular expression y pone los resultados que encuentra, o sea los matches en la variable $lines. Cada resultado ocupa un elemento :
$lines[0] el primero
$lines[1] el segundo
....
despues cada match es un array tambien, donde el primer elemento es el match completo o sea
toda la linea en tu caso:
11:00 Tenis: Nadal vs Federer (11:00-11:45)
despues los otros elementos contiene los maches particular, los que se buscan ponendo la busqueda entre () o sea lo que mecha con "[\w ]+" en tu caso (tienes solo una busqueda particular), o sea lo que buscamos
Nadal vs Federer
Lo siento pero tendria que escribir espanol mucho mejor para explicar bien esto.. espero haberte echado una ayuda.
Chao!
  #7 (permalink)  
Antiguo 29/05/2009, 09:56
 
Fecha de Ingreso: marzo-2009
Mensajes: 164
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Problema con split

Vale lo entiendo... ahora para completar digamos que tengo esto
Código:
[p1]
11:00 Tenis: Nadal vs Federer (11:00-11:45)
12:00 Practicar: Futbol (12:00-13:00)
[/p1]
[p2]
11:00 Tenis: Nadal vs Federer (11:00-11:45)
12:00 Practicar: Futbol (12:00-13:00)
[/p2]
Almacenar en una variable lo que esta entre [p2]y[/p2]
  #8 (permalink)  
Antiguo 30/05/2009, 02:48
Avatar de abidibo  
Fecha de Ingreso: mayo-2009
Mensajes: 121
Antigüedad: 15 años, 5 meses
Puntos: 7
Respuesta: Problema con split

Asì tendria que funccionar
Código PHP:
$reg_exp "/\[p2\]([^\]]+)\[\/p2\]/"
los resultados estan como siempre en
$lines[$i][1]
al variar de $i
Chao!
  #9 (permalink)  
Antiguo 30/05/2009, 08:58
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 split

Aporte: Expresiones PCRE
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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 13:05.