Hola
catoszyrko, tienes que usar el signo
? para que te coja la primera imagen y no se vaya del principio de la primera hasta el final de la última:
Fijate aquí
.*?
Código PHP:
Ver original<?php
$data = '<img src="myimage.jpg" title="title" alt="alt"> <img src="myimage2.jpg" title="title" alt="alt">';
$pattern = "/src=[\"']?([^\"']?.*?(png|jpg|gif))[\"']/i";
echo $images[1];
también puedes hacer algo así, que captura todo lo que esté entre las comillas del src
Código PHP:
Ver original<?php
$data = '<img src="myimage.jpg" title="title" alt="alt"> <img src="myimage2.jpg" title="title" alt="alt">';
$pattern = '@src="(.*?)"@i';
echo $images[1];
Pásate por este aporte:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
Ahora como propone
kiko's
Así obtienes la primera imagen usando
DOMDocument
Código PHP:
Ver original<?php
$doc=new DOMDocument();
$doc->loadHTML('<html><body>Test<br><img src="myimage.jpg" title="title" alt="alt"> </body></html>');
$imgs = $doc->getElementsByTagName('img');
echo $imgs->item(0)->attributes->getNamedItem('src')->nodeValue;
En caso de que el html tenga errores puedes usar por ejemplo la función
libxml_use_internal_errors o repararlo con la clase
Tidy etc...
Saludos.