2010-06-19 17 views
5

Chcę zamienić długi ciąg, taki jak reallyreallyreallyreallyreallylongfilename, na coś takiego jak reallyreallyre...yreallyreally.Wycinanie długości ciągu PHP i wstawianie elipsy

Zasadniczo znajdź środek ciągu znaków i zamień wszystko, aż długość ciągu znaków wynosi < 30 znaków, w tym elipsy, oznaczające, że zostały zastąpione części ciągu.

To jest mój kod gdzie Próbowałem to:

function cutString($input, $maxLen = 30) 
{ 
    if(strlen($input) < $maxLen) 
    { 
     return $input; 
    } 

    $midPoint = floor(strlen($input)/2); 
    $startPoint = $midPoint - 1; 

    return substr_replace($input, '...', $startPoint, 3); 
} 

Okazuje środek sznurka i zastępuje charakter obu stronach z . ale jest to, że nie może pracować się, jak to zrobić przytnij go do 30 znaków lub cokolwiek innego, $maxLen.

Mam nadzieję, że rozumiesz moje pytanie, nie sądzę, zrobiłem bardzo dobrą pracę w wyjaśniając 8)

Dzięki.

Odpowiedz

8

Jak o:

if (strlen($input) > $maxLen) { 
    $characters = floor($maxLen/2); 
    return substr($input, 0, $characters) . '...' . substr($input, -1 * $characters); 
} 
+0

To tylko dodaje '' ... do przodu ciąg, więc wyjście jest '... reallyreallyreallyreallyreally'. –

+2

Er, powinien umieścić '...' w środku łańcucha James, istnieją tam dwa wywołania substr. – Amber

+0

Wiem, że są. Ale jeśli umieściłem ten kod w mojej funkcji 'cutString', zwraca ciąg znaków z elipsami z przodu ciągu. –

Powiązane problemy