Pastreaza primele Nr tag-uri IMG intr-un text

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
cadou
Mesaje:328

Pastreaza primele Nr tag-uri IMG intr-un text

Am in baza de date un text ce contine si <img src=adresa> si doresc sa afisez doar
<img src=adresa>

Exemplu:
test in care avem <img src=adresa1> imagini chiar doua 3 <img src=adresa2> chiar mai multe imagini <img src=adresa3>

rezultat :
<img src=adresa1>

Doar prima <img src=adresa1> sa afiseze ! restu nu ma intereseaza

MarPlo Mesaje:4343
Salut
Poti sa folosesti functia din acest exemplu:

Cod: Selectaţi tot

// Function to keep first $nrimg IMG tags in $str, and strip all the other <img>s
// From: https://coursesweb.net/php-mysql/
function keepFirstImgs($nrimg, $str) {
  // gets an array with al <img> tags from $str
  if(preg_match_all('/(\<img[^\>]+\>)/i', $str, $mt)) {
    // gets array with the <img>s that must be stripped ($nrimg+), and removes them
    $remove_img = array_slice($mt[1], $nrimg);
    $str = str_ireplace($remove_img, '', $str);
  }
  return $str;
}

// Test, keeps the first two IMG tags in $str
$str = 'First img: <img src="img1.jpg" alt="img 1" width="30" />,
 second image: <img src="img_2.jpg" alt="img 2" width="30">,
 another Img tag <img src="img3.jpg" alt="img 3" width="30" />,
 and another image <img src="img_5.jpg" alt="imgage 5" width="30" /> ... etc.';
$str = keepFirstImgs(2, $str);
echo $str;
/* Output:
 First img: <img src="img1.jpg" alt="img 1" width="30" />,
 second image: <img src="img_2.jpg" alt="img 2" width="30">,
 another Img tag , and another image  ... etc.
*/
 
- Pentru varianta JavaScript a functiei din acest exemplu, vezi pagina: Keep the first Nr IMG tags, Remove all the others.

cadou Mesaje:328
La output ma interesa doar prima imagine: <img src=/adresaimg1>
atat nu si text etc ....

MarPlo Mesaje:4343
Ca sa scoti doar prima imagine, fara nici un text, se poate cu preg_match().

Cod: Selectaţi tot

$str = 'First img: <img src="img1.jpg" alt="img 1" width="30" />,
 second image: <img src="img_2.jpg" alt="img 2" width="30">,
 another Img tag <img src="img3.jpg" alt="img 3" width="30" />, ... etc.';
if(preg_match('/(\<img[^\>]+\>)/i', $str, $mt)) {
  $firstimg = $mt[0];
  echo $firstimg;        // <img src="img1.jpg" alt="img 1" width="30" />
}