Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/09/2014, 19:04
Avatar de pateketrueke
pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: solo me tira la primera búsqueda y el resto no

No se cual de ambas funciones estés probando, pero al menos con preg_match_all() no resulta porque la expresión es demasiado ambiciosa.

Voy a omitir ereg() porque sencillamente está obsoleta.

Código PHP:
Ver original
  1. <?php
  2.  
  3. function cortar2($fuente,$izq,$der){
  4.     $izq = preg_quote($izq,'/');
  5.     $der = preg_quote($der,'/');
  6.     preg_match_all("/".$izq."(.+)".$der."/", $fuente, $salida);
  7.     return $salida;
  8. }
  9.  
  10. $cadena= '<etiqueta>uno</etiqueta> contenido <etiqueta>dos</etiqueta> sigue el contenido <etiqueta>uno</etiqueta>';
  11. $cadena = cortar2($cadena, '<etiqueta>','</etiqueta>');
  12.  
  13. var_dump($cadena);
  14.  
  15. /*
  16. array(2) {
  17.   [0] =>
  18.   array(1) {
  19.     [0] =>
  20.     string(103) "<etiqueta>uno</etiqueta> contenido <etiqueta>dos</etiqueta> sigue el contenido <etiqueta>uno</etiqueta>"
  21.   }
  22.   [1] =>
  23.   array(1) {
  24.     [0] =>
  25.     string(82) "uno</etiqueta> contenido <etiqueta>dos</etiqueta> sigue el contenido <etiqueta>uno"
  26.   }
  27. }
  28. */

Y desde luego el resultado es muy lejos de lo que dices "anda perfecto", así que al menos con preg_match_all() no sirve lo que mencionas.

Ahora, si cambio la captura de (.+) a (.+?) ya funciona perfecto, pues la expresión es menos ambiciosa y analiza todos los pares de etiquetas, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.