Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: dimitrix en 20 Junio 2012, 11:32 am



Título: Seleccionar con explode varias palabras
Publicado por: dimitrix en 20 Junio 2012, 11:32 am
He cogido 'prestado' este código de WHK:

Código
  1. <?php
  2. function desde_hasta($desde, $hasta, $contenido){
  3. if(eregi($desde ,$contenido)){
  4.  $retorno = explode($desde, $contenido);
  5.  $retorno = $retorno[1];
  6.  $retorno = explode($hasta, $retorno);
  7.  $retorno = $retorno[0];
  8.  return $retorno;
  9. } else {
  10.  return FALSE;
  11. }
  12. }
  13. ?>

El problema es cuando tengo:
Citar
"Carlos" <carlos@gmail.com>,
Luis Pérez <luis@perez.com>,
"Anita" <anita@labonita.net>,

Si quiero coger los emails, solo cogería el primero, entonces... ¿Cómo puedo hacer para tener en un array todos?


Título: Re: Seleccionar con explode varias palabras
Publicado por: #!drvy en 20 Junio 2012, 13:39 pm
La verdad es que esa funcion es la leche.. y yo me he topado varias veces con el problema que tienes tu xD.

Ahora suelo utilizar regex tengo una funcion tipo esto:

Código
  1. function desde_hasta($desde,$hasta,$contenido){
  2.  $regex = "/$desde(.*?)$hasta/s";
  3.  preg_match_all($regex,$contenido,$match);
  4.  return $match[1];
  5. }

Pero si quiero selecionar el contenido entre <who> y </who> la tengo que llamar al estilo desde_hasta('\<who','\<\/who\>',$contenido); por los delimitadores y todo eso xD..

Asi que arreglando rapidamente la de WHK.. me salio esto:

Código
  1. function desde_hasta($desde, $hasta, $contenido){
  2. if(stristr($contenido,$desde)){
  3.  $retorno = explode($desde, $contenido);
  4.  unset($retorno[0]);
  5.  foreach($retorno as $retorn){
  6.    $retorn = explode($hasta, $retorn);
  7.    $retorn = $retorn[0];
  8.    $retornar[]=$retorn;
  9.  }
  10.  return $retornar;
  11. } else {return FALSE;}
  12. }

Si suponemos que $contenido es lo que has citado devolvería algo así:
print_r(desde_hasta('<','>',$content));
Código
  1. Array ( [0] => carlos@gmail.com [1] => luis@perez.com [2] => anita@labonita.net )


Saludos


Título: Re: Seleccionar con explode varias palabras
Publicado por: dimitrix en 20 Junio 2012, 14:08 pm
Muchas gracias, usaré la tuya :-)