Teoretycznie zadanie jest proste do rozwiązania. Używając funkcji
Thank you for reading this post, don't forget to subscribe!substr()
skrócimy pożądany ciąg znaków na docelową długość, jednak problem pojawia się gdy dzielimy słowa które zawierają polskie znaki lub tekst posiada znaczniki html.. Jak sobie z tym poradzić?
Oto funkcja
cut()
, która nam to umożliwi..
public function cut($tekst,$ile){ // pozbywam się tagów HTML z tekstu $tekst = strip_tags($tekst); // jeśli tekst jest dłuższy od podanej ilość znaków w zmiennej $ile // wykonuje się warunek if (strlen($tekst) > $ile) { // pierwsze skrócenie tekstu $tekst=substr($tekst, 0, $ile); // drugie skrócenie tekstu - skraca do momentu wystąpienia ostatniej spacji w skróconym tekście // przez co nie ucina nam słów w połowie i nie wyskakują "krzaki" for ($a=strlen($tekst)-1;$a>=0;$a--) { if ($tekst[$a]==" ") { //wyświetlenie na końcu tekstu trzech kropek $tekst=substr($tekst, 0, $a)."..."; break; }; }; }; // zwracanie prze-formatowanego tekstu return $tekst; }
Jak ta funkcję użyć?
Przedstawiam przykład:
function cut($tekst,$ile){ $tekst = strip_tags($tekst); if (strlen($tekst) > $ile) { $tekst=substr($tekst, 0, $ile); for ($a=strlen($tekst)-1;$a>=0;$a--) { if ($tekst[$a]==" ") { $tekst=substr($tekst, 0, $a)."..."; break; }; }; }; return $tekst; } $tekst="Przykładowy tekst do skrócenia wykorzystany w przykładzie na stronie hackwars.pl "; echo cut($tekst, 60);
Wynikiem działania programu będzie: Przykładowy tekst do skrócenia wykorzystany w…