Skip to content Skip to sidebar Skip to footer

Strip Tags, But Keep The First One

How can I keep for example the first img tag but strip all the others? (from a HTML string) example:

some text desc/(\<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"/>, etc.'; $str= keepNrImgs(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 , ... etc. */

Solution 2:

You might be able to accomplish this with a complex regex string, however my suggestion would be to use preg_replace_callback, particularly if you are on php 5.3+ and here's why. http://www.php.net/manual/en/function.preg-replace-callback.php

$tagTracking = array();
preg_replace_callback('/<[^<]+?(>|/>)/', function($match) use($tagTracking) {
    // your code to track tags here, and apply as you desire.
});

Post a Comment for "Strip Tags, But Keep The First One"