lostyazilim
tr.link

Bağlantı Uzunluğuna Göre Kısaltma Yapma

4 Mesajlar 732 Okunma
lstbozum
tr.link

ozanakkaya ozanakkaya WM Aracı Kullanıcı
  • Üyelik 12.05.2014
  • Yaş/Cinsiyet 47 / E
  • Meslek Memur
  • Konum Denizli
  • Ad Soyad O** A**
  • Mesajlar 226
  • Beğeniler 42 / 53
  • Ticaret 8, (%100)
Herkese merhaba,

Mybb forum sistemi ile gönderilen tüm mailleri html mail formatına çevirerek gönderiyorum.

Maildeki mesaj kısmında bulunan bağlantıları

$text = eregi_replace('(((f|ht){1}tps://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)','\\1', $text);


kodu ile a href ekleterek tıklabilir duruma getiriyorum.

Ancak, bazı bağlanılar çok uzun mesela

https://www.xxxx.net/usercp2.php?action=removetest&tid=833387&my_post_key=bab123123452ca4e12e72cb93992744

şeklinde ben bu bağlantıdaki karakter sayısı 70'den fazla ise

https://www.xxxx.net/usercp2.php?action=removetest&tid=833387&my_post_...
şeklinde nasıl değiştirebilirim? Yani bağlantı metni 70 karakterden uzun ise 70'e kadar kısaltıp sonuna ... ekleyecek.

Yardımcı olacaklara şimdiden teşekkür ederim. Umarım sıkıntıyı anlatabilmişimdir.
 

 

wmaraci
reklam

27207 27207 WM Aracı Anonim Üyelik
  • Üyelik 02.01.2014
  • Yaş/Cinsiyet - /
  • Meslek
  • Konum
  • Ad Soyad ** **
  • Mesajlar 1852
  • Beğeniler 346 / 707
  • Ticaret 5, (%100)
Hocam en iyisi base 36 integer ile kısaltmak. Hem de kendine özel bir shortener gibi olur.

http://www.hashbangcode.com/blog/shortening-long-urls-php
Buna da bakabilirsin.
 

 

ozer11 ozer11 WM Aracı Kullanıcı
  • Üyelik 08.12.2017
  • Yaş/Cinsiyet 32 / E
  • Meslek kontrol ve otomasyon mühendisi
  • Konum Kocaeli
  • Ad Soyad Ö** Ö**
  • Mesajlar 130
  • Beğeniler 36 / 28
  • Ticaret 0, (%0)
function kisalt($kelime, $str = 10){
$kh=array('ı','i','ş','ö','ğ','ç','ü');
$bh=array('I','İ','Ş','Ö','Ğ','Ç','Ü');
$kelime=str_replace($bh,$kh,$kelime);
$kelime=strtolower($kelime);
$orjinalkelime=$kelime;
if (strlen($kelime) > $str)
{
if (function_exists("mb_substr")) $kelime = mb_substr($kelime,0,$str,'UTF-8').'..';
else $kelime = substr($kelime, 0, $str).'..';
$kelime=''.$kelime.'';
}
return $kelime;
}


kullanımı



siz şu şekilde kullanacaksınız







bu şekilde tıkladığınız link bozulmazken ismi kısa gözükecektir.
 

 

ozanakkaya ozanakkaya WM Aracı Kullanıcı
  • Üyelik 12.05.2014
  • Yaş/Cinsiyet 47 / E
  • Meslek Memur
  • Konum Denizli
  • Ad Soyad O** A**
  • Mesajlar 226
  • Beğeniler 42 / 53
  • Ticaret 8, (%100)
Her iki cevap içinde teşekkür ederim.

function shortenurl($url)
{
if ( strlen($url) > 45) {
return substr($url, 0, 30)."[...]".substr($url, -15);
} else {
return $url;
}
}

function getClickableLinks($text) {
$regex = '/(((http|https|ftp|ftps)\:\/\/)|(www\.))[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\:[0-9]+)?(\/\S*)?/';
return preg_replace_callback($regex, function ($matches) {
return "".shortenurl($matches[0])."";
}, $text);
}


kodları ile çözüm buldum.
 

 

wmaraci
wmaraci
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al