Leave first image in text and cat length(howto)
Oct 28
This simple script makes good things!
1) leave first img tag
2) remove all another img tags
3) cut text by length
So you get simple text short text with one image on it.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | function cut_text($x) { $alli = catch_that_image($x); if ($alli) { $x= substr($x, 0, $alli[2]+$alli[3]). substr(strip_only($x, '<img>'), $alli[2]); } if(strlen($x) > 700) { $x = substr($x, 0, 700); $y = strrpos($x, '>'); $x = substr($x, 0, $y). '>...'; } return $x; } function catch_that_image($x) { $first_img = ''; $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $x, $matches); @$first_img = $matches [1][0]; $imglen = strlen($matches [0][0]); if (strlen($matches [1][0]) AND $imglen){ $imgpos = stripos($x, $matches [0][0]); $tx = substr($x, 0, $imgpos).substr($x, $imgpos+$imglen); //Vsio krome<img> }else{ $tx = false; } return array($tx,$matches [0][0], $imgpos, $imglen ); } function strip_only($str, $tags) { if(!is_array($tags)) { $tags = (strpos($str, '>') !== false ? explode('>', str_replace('<', '', $tags)) : array($tags)); if(end($tags) == '') array_pop($tags); } foreach($tags as $tag) $str = preg_replace('#</?'.$tag.'[^>]*>#is', '', $str); return $str; } echo cut_text('<div class="content" style="min-height: 202px;"> <img width="200" height="200" alt="Post Pic" src="http://www.wprecipes.com/wp-content/uploads/2009/02/php2.jpg"/> <div class="pic fl"> <img width="200" height="200" alt="Post Pic" src="http://www.wprecipes.com/wp-content/uploads/2009/02/php2.jpg"/> </div> <div class="post-title"> </div> <img width="200" height="200" alt="Post Pic" src="http://www.wprecipes.com/wp-content/uploads/2009/02/php2.jpg"/> <div class="post-excerpt">'); |