Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/09/2012, 02:02
alyciashape
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años, 7 meses
Puntos: 58
Respuesta: Buscar substring en cadena de texto.

Supongo que lo que te interesa es noticia. Puedes hacerlo con strpos y substr. Con strpos buscas <a href="00000/?ref=m"> y te dará la posición de esa cadena. Te dará de posición el "<" justo donde empieza. Supongamos posición 107.

Luego tendrás que sumarle a esa posición los caracteres de "<a href="00000/?ref=m">" ya que eso ya lo tienes y no te interesa, lo puedes hacer con strleng. Esto se lo sumas a posicion.

Así tienes la posición donde inicia noticia pero también necesitas saber donde termina.
Buscas </a> a partir de la posición anterior y lo mismo que antes. Solo que ahora no necesitas sumar nada, la posición que te da es en la que termina noticia.

Ahora haces un substr desde la posicion a hasta la posicion b y listos.

En código (lo estoy haciendo de memoria igual pongo algo mal):
Código PHP:
$html 'Blabla bla bla bla<a href="00000/?ref=m">noticia</a>blabla bla bla';
//Obtenemos la posición de inicio
$posicion_inicio =  strpos($html'<a href="00000/?ref=m">');
//Sumamos los caracteres de la cadena
$posicion_inicio $posicion_inicio strlen('<a href="00000/?ref=m">');

//Retiramos todo lo que va antes de lo que nos interesa
$html substr($posicion_inicio);

//Ahora el texto que nos interesa está al inicio en la posición 0. Nos falta saber cuanto mide
$posicion_final strpos($html'</a>'); //Si puedes añadir algo más específico que <a/> añadiendo algo de lo que viene después mejor
//A posición final no necesitamos sumarle ni restarle nada. Nos indica justo la posición que queremos.
$cadena substr(0$posicion_final);
$echo $cadena//devuelve 'noticia'

//Por si vamos a querer escanear el siguiente <a href="00000/?ref=m"> retiramos todo hasta ahora.
$html substr(0$posicion_final); //esto ya no contiene 'noticia'
//es un poco redundante con lo de arriba pero así queda más claro 
Creo que es así, aver si lo puse bien.

Última edición por alyciashape; 03/09/2012 a las 04:53