Foros del Web » Programando para Internet » PHP »

Encontrar imágenes con spliti()

Estas en el tema de Encontrar imágenes con spliti() en el foro de PHP en Foros del Web. Hola a todos!!! A ver si me podéis ayudar a mejorar la expresión regular esta porque no me da los resultados que esperaba :( Código ...
  #1 (permalink)  
Antiguo 04/03/2005, 11:18
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 21 años, 4 meses
Puntos: 0
Pregunta Encontrar imágenes con spliti()

Hola a todos!!!

A ver si me podéis ayudar a mejorar la expresión regular esta porque no me da los resultados que esperaba :(

Código PHP:
$caja="<img src=\"imagen.jpg\">Prueba<img src=\"imagen2.bmp\">";
$vector=spliti('(img src=\"*\")',$caja,$arr);
$cantidad=sizeof($vector);
echo 
"Se han encontrado $cantidad imágenes: -$vector[0]- -$vector[1]-<br>"
Si ejecuto ese script, se me devuelve por pantalla:

Se han encontrado 1 imágenes: -<img src="imagen.jpg">Prueba<img src="imagen2.bmp"> -

Pero con las imágenes en lugar de su código HTML, claro. O sea, que mete todo $caja en $vector[0] cuando con esa expresión regular pretendo que me meta en cada celda del array lo que esté entre img src=" y "

¿Podéis ayudarme?

¡¡Muchas gracias por adelantado!!

Última edición por dolarsrg; 04/03/2005 a las 11:19
  #2 (permalink)  
Antiguo 04/03/2005, 11:32
Avatar de walo  
Fecha de Ingreso: mayo-2004
Mensajes: 310
Antigüedad: 20 años, 5 meses
Puntos: 0
Estas haciendo mal, ahi no hay expresiones regulares, estas intentanso reemplazar la cadena (img src=\"*\") que no existe.
No soy un experto en expresiones regulares, pero tenes que suar corchetes, no parentesis. Y las \" tampoco va asi, por que la variable ya las transforma en "
Proba

$vector=spliti('"',$caja);
$vector[1] va a ser imagen.jpg y
$vector[3] imagen2.jpg

si asi no funciona, proba
$vector=spliti('\"',$caja);
  #3 (permalink)  
Antiguo 04/03/2005, 11:42
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 21 años, 4 meses
Puntos: 0
Gracias por tu respuesta walo!:

Pero no funciona :( dice que encuentra 5 entradas y la salida de [0] y [1] es: -\- -imagen.jpg

Yo creo que así coge todo lo que está antes y después de comillas, no lo que está entre comillas.

Y de todos modos, aun cogiendo lo que está entre comillas sólo serviría para el caso particular del ejemplo, en cuanto en la variable también hubiera elaces u otras cosas que no fueran imágenes entre comillas también las capturaría :(

A ver si alguien nos ayuda con otra función u otra expresión regular.

¡¡Gracias de todos modos!!
  #4 (permalink)  
Antiguo 04/03/2005, 14:13
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 21 años, 4 meses
Puntos: 0
Alguien sabe si es problema de la Expresión regular?? es que estoy empezando a dudar que la función split sea lo que necesito...

Tal vez sea mejor un eregi_replace en un bucle e ir sacando poco a poco las coincidencias... ¿qué opinais?

¡¡Muchas gracias otra vez!!
  #5 (permalink)  
Antiguo 05/03/2005, 06:27
Avatar de txetxol  
Fecha de Ingreso: febrero-2002
Ubicación: Pamplona
Mensajes: 73
Antigüedad: 22 años, 9 meses
Puntos: 1
Llevo un rato dandole vueltas y no hay forma...

Según entiendo lo que pone en el manual sobre la función split no creo que sea la más indicada...

lo único que he conseguido con expresiones regulares es esto, es lo siguiente aunque eregi solo reconoce la primera coincidencia...
Código PHP:
$caja="<img src=\"imagen.jpg\">Prueba<img src=\"imagen2.bmp\">";
ereg("img src=\"([^\"]{1,})\""$caja$vector);
echo 
$vector[1]; //imagen.jpg 
alguna idea mas?
estoy intrigado jeje
  #6 (permalink)  
Antiguo 05/03/2005, 07:17
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 21 años, 4 meses
Puntos: 0
Muchas gracias!! Al final creo que utilizaré una convinación de eregi con str_replace para borrar las cosas que vaya encontrando. Todo dentro de un while para econtrar todas y meterlas a mano en un array.

¡¡¡Muchas gracias a todos!!!
  #7 (permalink)  
Antiguo 05/03/2005, 07:17
Avatar de txetxol  
Fecha de Ingreso: febrero-2002
Ubicación: Pamplona
Mensajes: 73
Antigüedad: 22 años, 9 meses
Puntos: 1
Bueno pues ya esta, no me termina de gustar... pero bueno. A ver si a alguno se le ocurre algo mejor, yo esque controlo mucho las funciones de cadenas.

Código PHP:
function extraer_imagenes($cad)
{
    
$aux=$cad;
    
$i=0;    
    
    while(
ereg("img src=\"([^\"]{1,})\""$aux$vector)){
        
$datos[$i++]=$vector[1];
        
$aux=strstr($aux$vector[1]);
        
$aux=substr($auxstrlen($vector[1]));    
    }
    return(
$datos?$datos:0);

Un saludo
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 13:00.