Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/09/2012, 07:23
Avatar de aguila_393
aguila_393
 
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 17 años, 2 meses
Puntos: 1
Respuesta: Buscar substring en cadena de texto.

Cita:
Iniciado por alyciashape Ver Mensaje
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.
Gracias, asi como lo pusiste funciona. De todas maneras estoy tratando de hacerlo con el preg_match_all ya que me hago todo en una sola linea de codigo y es mas eficiente.

Ya probe que funciona porque anteriormente lo usaba para copiar datos de otras webs pero ahora por alguna razon que no logro descubrir no funciona.