Foros del Web » Programando para Internet » PHP »

preg_match no continua despues de encontrar un resultado

Estas en el tema de preg_match no continua despues de encontrar un resultado en el foro de PHP en Foros del Web. intento capturar textos tipo ::cosa87:: ::cogeme:: ::8((:: ::;):: ::!:: no hay mas caracteres raros que esos Código PHP: <? function  codificacion (  $codigo  ) {      ...
  #1 (permalink)  
Antiguo 18/04/2005, 10:43
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
preg_match no continua despues de encontrar un resultado

intento capturar textos tipo
::cosa87::
::cogeme::
::8((::
::;)::
::!::

no hay mas caracteres raros que esos

Código PHP:
<?

function codificacion$codigo ) {
    
// tiene que buscar todos los ::xxxxx:: 
    //   la src sera imgs_caritas/xxxxx.gif.
    //   nos debemos enterar de su width y de su height
    // Sustituirlos por <img src="imgs_caritas/xxxxx.gif">
    
$hay=preg_match("/:{2}([a-z0-9]+):{2}/i",$codigo,$resultado);
    for(
$a=0;$a<count($resultado);$a++)
        echo 
$resultado[$a]."<br>";
}


$texto="este es mi texto ::cosa87:: y algo mas complicado ::cogeme:: y llegamos mas lejos ::8((:: y mas ::;):: hasta exclamar! ::!::";

codificacion($texto);

?>

Empiezo con esto (que no incluye todas las posibilidades) pero que me tendria que valer para ::cosa87:: y para ::cogeme::

Y solo me captura la primera incidencia, (en este caso cosa87) y las demas las omite.

Seguro que es una tonteria, ¿que me falta?
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #2 (permalink)  
Antiguo 18/04/2005, 15:53
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Usa preg_match_all.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 19/04/2005, 02:03
Avatar de don_fransisco  
Fecha de Ingreso: junio-2004
Mensajes: 193
Antigüedad: 19 años, 10 meses
Puntos: 1
Hola hazlo con Preg_match_all y prueba con este patron:

"/((:{2})(\w)*(\()*(;\))*(!)*\\2)/i"

Diferencias entre Preg_match_all y preg_match :
http://www.forosdelweb.com/showthrea...preg_match_all

salu2s

Última edición por don_fransisco; 19/04/2005 a las 02:20
  #4 (permalink)  
Antiguo 19/04/2005, 06:16
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Gracias a los dos.

fransisco no tenias porque haberme pasado la expresion! ejje te lo agradezco mucho
Al final como necesito lo de dentro de los puntos lo he simplificado asi:
"/:{2}([\w\(;\)!]*):{2}/i"
capturando solo el centro

salu2!!
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:26.