PHP: Skracanie długich linków

Autor: Arkadiusz Tobiasz 27 grudnia 2011

Czasem w komentarzach ktoś może wstawić długi link, który może rozciągnąć naszą stronę. Jednym z rozwiązań jest skrócenie linku. Przykładowo mając link w formie:

http://www.housemd.info.pl/news/3266/najczesciej-sciagane-seriale-w-2011-roku.htm

chcemy go skrócić do postaci:

http://www.housemd.info.pl/new…-roku.html

Nasz algorytm będzie skracał jedynie linki, które mają więcej niż 40 znaków. W takim przypadku adres URL będzie się składał z 30 pierwszych znaków, trzech kropek i 10 ostatnich znaków.

Nasza funkcja będzie wyglądać następująco:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function shortUrls($link, $protocol = 'http://', $start= 30, $end = 10){
    if (strlen($link) < $start + $end) {
        return $link;
    } else {
    if (strlen($protocol) + 1 > $start) {
            return $link;
    } else {
        $start-= strlen($protocol);
        $newLink = preg_replace('#('.$protocol.'([\S]{'.$start.'})[\S]+([\S]{'.$end.'}))#m', '<a href="$1">'.$protocol.'$2...$3</a>', $link);
        $newLink = preg_replace('#[\s]('.$protocol.'[\S]+)[\s]#m', ' <a href="$1">$1</a> ', $newLink);

        return $strReplaced;
       }
   }
}

Funkcje wykorzystujemy w następujący sposób:

1
echo shortUrls($string);

Odpowiedz

 

Arkadiusz Tobiasz student Akademii Ekonomicznej im. Karola Adamieckiego w Katowicach na specjalnościach informatyka ekonomiczna oraz rachunkowość. Więcej...

jQuery Validation i funkcja remote

Jakiś czas temu zwrócił się do mnie użytkownik z problemem. Chodzi o to, że korzysta on z pluginu walidacji jQuery, […]

Zend Framework: integracja z Uploadify

W tym wpisie postaram się przedstawić Wam w jaki sposób zintegrować skrypt Uploadify z Zend Frameworkiem. Dzięki temu będziemy mogli […]

Javascript: Czasowe wyświetlanie reklamy

Czasami chcemy, aby na pewnym elemencie naszej strony wyświetlała się reklama przez jakiś czas, a następnie zniknęła. W tym wpisie […]

Linux: backup wszystkich baz danych MySQL

Swego czasu pisałem o tym jak z poziomu konsoli można szybko i przyjemnie zrobić backup bazy MySQL. Wszystko jest ładnie […]