Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/09/2013, 12:21
pitger
 
Fecha de Ingreso: septiembre-2013
Mensajes: 33
Antigüedad: 10 años, 7 meses
Puntos: 4
Cargar datos extraidos con 'RegExpr' en array php

Hola.

Llevo unos dias intentando hacer funcionar esto y no sé como arreglarlo.

Os cuento. Uso unas galerías de fotos que guardo en un campo de una base de datos, de esta forma:

Código:
<a href="http://www.website.com/img.php?image=image1.jpg"><img src="http://www.website.com/img.php?image=image1_min.jpg" style="max-width: 210px; max-height: 230px"></a>

<a href="http://www.website.com/img.php?image=image2.jpg"><img src="http://www.website.com/img.php?image=image2_min.jpg" style="max-width: 210px; max-height: 230px"></a>

<a href="http://www.website.com/img.php?image=imageN.jpg"><img src="http://www.website.com/img.php?image=imageN_min.jpg" style="max-width: 210px; max-height: 230px"></a>
... y así consigo tener recopilado cada galería en un registro diferente de la base de datos en un campo de texto donde la 1ª foto es la portada y el resto son las fotos del album

A la hora de mostrarlas tengo en una pagina php donde muestro la primera foto de cada galería... para ello uso las "expresiones regulares" de forma que pueda separar cada foto en una posición del array y evidentemente la 1ª foto va en la posición 0 del array ( algo así--> $coincidencias[0];)

Después, en esa galería (representada con la 1ª foto, o foto de portada) tengo una cabecera con el título o nombre del album, fecha de inserción, (eso ya está) y añadir el número de fotos que contiene ese album... que supuestamente con count($coincidencias) debería funcionar, pero siempre me da como recuento 1 o 2.

Esto que cuento lo hago de esta forma:
Código PHP:
$patron  "/\<a href(\S*)\s*\S*\s*\S*\s*\S*\s*\S*\s*\S*\/a>/";                
preg_match($patron$cadena$coincidencias); 
donde $patron es la expresión regular; $cadena es la celda de la base de datos que contiene todos los enlaces a extraer y $coincidencias el array donde cargo todos los resultados

A lo que voy... sé que el fallo parece venir de la expresión regular, porque tengo el componente "Regular Expresions Tester" del Firefox y probándo esa expresión regular parece ir bien (eso si, sin el carácter '/' incial y final ya que en php parece que sin esas '/' no funciona y creo que es porque ese testeador parece que trabaja con expresiones regulares para javascript y en php no va exactamente igual).

He de decir que la 1ª imagen si la carga en el 1º resultado del array, pero el 2º resultado del array es solo un fragmento de la segunda url y luego ya no hay mas resultados.

¿qué estoy haciendo mal? ¿hay un patron de RegEx mejor?

*En la seccion de javascript hay un apartado de expresiones regulares pero he puesto esta consulta aquí porque quiero que funcione para php.