Foros del Web » Programando para Internet » PHP »

Metodología para encontrar una cadena dentro de un texto

Estas en el tema de Metodología para encontrar una cadena dentro de un texto en el foro de PHP en Foros del Web. Hola a todos Estoy tratando de encontrar la forma óptima de llevar a cabo un proceso. Este proceso se va a realizar varias veces por ...
  #1 (permalink)  
Antiguo 24/01/2013, 03:55
Avatar de atoleon  
Fecha de Ingreso: marzo-2007
Mensajes: 156
Antigüedad: 17 años, 8 meses
Puntos: 1
Metodología para encontrar una cadena dentro de un texto

Hola a todos

Estoy tratando de encontrar la forma óptima de llevar a cabo un proceso. Este proceso se va a realizar varias veces por minuto así que me gustaría optimizarlo lo mejor posible. A lo mejor es tontería, pero en cualquier caso me gustaría encontrar la mejor manera de hacerlo.

- Lo que tengo que hacer es recoger un texto algo similar a esto:
"Bienvenido al sistema talycual Fulanito. estamos muy contentos de que haya venido recomendado por Pepito y haya decidido comprar el paquete Paquete1..."

- Una vez recibo el texto, tengo que encontrar quien es el nuevo (Fulanito), quien es el que lo recomendó (Pepito) y que paquete compró (Paquete1).

- Lo que había pensado hacer es recoger el texto, hacer un explode separando por espacios en blanco y como va a ser un mensaje tipo (siempre igual) a los 3 valores mediante un cadena[n].

A ver que os parece, y si existe una manera más fácil de hacerlo. El texto va ser un pelín largo. de unas 100 o 200 palabras, así que va a genera un array contendente, creo.

Gracias a todos.
  #2 (permalink)  
Antiguo 24/01/2013, 04:44
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años
Puntos: 67
Respuesta: Metodología para encontrar una cadena dentro de un texto

Pues si sabes que el String va a ser siempre: "Bienvenido al sistema talycual Fulanito. estamos muy contentos de que haya venido recomendado por Pepito.."
Haz un explode de un substring sobre esa cadena. Ten en cuneta que el nombre varía así que deja un margen para nombres largos.
  #3 (permalink)  
Antiguo 24/01/2013, 04:50
Avatar de atoleon  
Fecha de Ingreso: marzo-2007
Mensajes: 156
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Metodología para encontrar una cadena dentro de un texto

Con un substring tengo que marcar el inicio y el final de la parte que quiero substraer. Teniendo nombres variables no me sirve, ya que no podría saber donde acaba.
  #4 (permalink)  
Antiguo 24/01/2013, 13:02
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años
Puntos: 67
Respuesta: Metodología para encontrar una cadena dentro de un texto

Yo no te decía que usases substring, yo te decía que para no generar un array de 200 valores, suponiendo que el texto tenga 200 palabras, uses una combinación de ambos. Por ejemplo si sabes que el texto es:
"Bienvenido al sistema talycual Fulanito. estamos muy contentos de que haya venido recomendado por Pepito y haya decidido comprar el paquete Paquete1..."

Podrías hacer un substring desde el primer nombre hasta el final, o si va a ser mucho más largo, desde el primer nombre hasta un punto que te de un buen margen para asegurarte que coges el segundo nombre.
Después sobre ese substring hacer un explode() de los espacios.

O bien utilizar palabras clave, si hay varias que no se repiten nunca para combinar, strpos, substr y explode. Más que nada para no generar un array enorme.

Aunque estoy seguro de que habrá alguna manera que pasándole como parámetro el texto con nombres y el texto con alguna clave, sacar los nombres
  #5 (permalink)  
Antiguo 24/01/2013, 16:10
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 7 meses
Puntos: 270
Respuesta: Metodología para encontrar una cadena dentro de un texto

preg_match?
  #6 (permalink)  
Antiguo 24/01/2013, 16:58
Avatar de zalito12  
Fecha de Ingreso: noviembre-2011
Ubicación: Coruña, España
Mensajes: 430
Antigüedad: 13 años
Puntos: 67
Respuesta: Metodología para encontrar una cadena dentro de un texto

Yo con las expresiones regulares soy malísimo
Pero mira, te pongo un ejemplo utilizando sólo strpos y substring, es muy rudimentario pero te ahorras lo del array que si es un texto muy largo podría ser un uso excesivo de memoria para nada.

Código PHP:
<?php
$texto 
"Bienvenido al sistema talycual Fulanito. estamos muy contentos de que haya venido recomendado por Pepito y haya decidido comprar el paquete Paquete1.";
$posN1 31;
$posF1 strpos($texto,".");

$posN2 strpos($texto" por ") + 5;
$posF2 strpos($texto," y haya decidido comprar el");

echo 
'1'.substr($texto,$posN1,$posF1-$posN1).'1';
echo 
'<br />1'.substr($texto$posN2$posF2-$posN2).'1';
?>
Los '1' están para ver que no haya espacios.
Eso habría que adaptarlo al texto original, es un ejemplo pero el método es igual, encontrar una cadena característica para identificar la posición de inicio y fin de los nombres.

Etiquetas: encontrar
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 09:00.