PHP ile metni belli bir yerde kısaltmak

Uzun yazıları kırptığımızda, son kelimenin kalan kısımı görünmez oluyor ve anlamsız bir kelime, bazende tek bir harf olabiliyor. Örneğin;
$icerik = ‘Uzun yazıları kırptığımızda, son kelimenin kalan kısımı görünmez oluyor ve anlamsız bir kelime bazende tek bir harf olabiliyor.’;
Yukarıdaki içeriği substr() fonksiyonu ile, 60 karakterle sınırlarsak çıktı; “Uzun yazıları kırptığımızda, son kelimenin kalan kıs” oluyor.
Düzenli bir metin bölme işlemi için PHP de 2 satır kod yazmamız yeterli olacaktır…

if( preg_match(‘/(.*?)\s/i’, substr( $icerik, 60), $dizi) )
$icerik = substr($icerik, 0, 60+strlen($dizi[0]));
Çıktı;
“Uzun yazıları kırptığımızda, son kelimenin kalan kısımı“
Eğer içeriğimiz sadece text değil, html de içerisyorsa bu durumda, html taglarını yazıdan temizlememiz gerekir…. O halde bu durumda kodlarımız;

$icerik = strip_tags($icerik);
if( preg_match(‘/(.*?)\s/i’, substr( $icerik, 60), $dizi) )
$icerik = substr($icerik, 0, 60+strlen($dizi[0]));
Daha da ileri gidelim, html kodlarını temizledikten sonra istemediğimiz boşluklar oluşur ve bu boşluklar metinin olduğundan daha kısa olmasına neden olur… Bu durumda kodlarımız;

$icerik = strip_tags($icerik);
$icerik = str_replace(“\t”,” “,$icerik);
$icerik = str_replace(“\r\n”,” “,$icerik);
$icerik_bol = explode(” “, $icerik); // metini bosluklara gore bolduk
$icerik = “”;
for($i = 0; $i < count($icerik_bol); $i++) { if ($icerik_bol[$i] != "") // veri yok mu? Atla, varsa ekle $icerik .= trim($icerik_bol[$i])." "; } if( preg_match('/(.*?)\s/i', substr( $icerik, 60), $dizi) ) $icerik = substr($icerik, 0, 60+strlen($dizi[0]));

Aramalar:

phpde html taglarını kesmeden kısaltma

Sevebilirsin...

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir