Seleccionar con explode varias palabras

Iniciado por dimitrix, 20 Junio 2012, 11:32 AM

0 Miembros y 2 Visitantes están viendo este tema.

dimitrix

He cogido 'prestado' este código de WHK:

Código (php-brief) [Seleccionar]
<?php
function desde_hasta($desde$hasta$contenido){
 if(
eregi($desde ,$contenido)){
  
$retorno explode($desde$contenido);
  
$retorno $retorno[1];
  
$retorno explode($hasta$retorno);
  
$retorno $retorno[0];
  return 
$retorno;
 } else {
  return 
FALSE;
 }
}
?>


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?




#!drvy

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 (php) [Seleccionar]
function desde_hasta($desde,$hasta,$contenido){
  $regex = "/$desde(.*?)$hasta/s";
  preg_match_all($regex,$contenido,$match);
  return $match[1];
}


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 (php) [Seleccionar]
function desde_hasta($desde, $hasta, $contenido){
if(stristr($contenido,$desde)){
  $retorno = explode($desde, $contenido);
  unset($retorno[0]);
  foreach($retorno as $retorn){
    $retorn = explode($hasta, $retorn);
    $retorn = $retorn[0];
    $retornar[]=$retorn;
  }
  return $retornar;
} else {return FALSE;}
}


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


Saludos

dimitrix