[PHP] W jaki sposób skrócić długość tekstu tak jak jest to robione w newsach?

0
80
Rate this post

Często na stronach internetowych z newsami czy blogami zauważamy skrócone wersje artykułów. Pokazują one jedynie kilka pierwszych linijek tekstu lub kilka zdań, aby przyciągnąć uwagę czytelnika i skłonić go do kliknięcia w link, żeby przeczytać cały artykuł. W PHP jest kilka sposobów na skrócenie tekstu w taki sposób. Oto kilka z nich.

Użycie funkcji substr()

Najprostszym sposobem skrócenia tekstu jest użycie funkcji substr(), która zwraca podciąg znaków z danego ciągu.

php
$text = "To jest bardzo długi tekst, który chcemy skrócić.";
$shortText = substr($text, 0, 50); // "To jest bardzo długi tekst, który chcemy sk..."

Ta metoda jest jednak dość brutalna. Może przyciąć słowo na końcu, co sprawi, że skrócony tekst będzie trudniejszy do zrozumienia.

Dodanie trzech kropek na końcu

Możesz również dodać trzy kropki („…”) na końcu skróconego tekstu, żeby dać czytelnikowi znać, że tekst jest dłuższy.

php
$shortText = substr($text, 0, 47) . "...";

Użycie mb_substr() dla obsługi znaków UTF-8

Jeśli twój tekst zawiera znaki specjalne lub jest w innym języku niż angielski, zaleca się użycie funkcji mb_substr() zamiast substr().

php
$shortText = mb_substr($text, 0, 50, 'UTF-8') . "...";

Skracanie tekstu do pełnych zdań

Ciekawszym podejściem jest skrócenie tekstu do pełnych zdań. Można to zrobić, szukając ostatniego znaku interpunkcyjnego w skróconym tekście.

php
$maxLength = 50;
$shortText = substr($text, 0, $maxLength);
$lastPunctuation = strrpos($shortText, '.');
if ($lastPunctuation !== false) {
$shortText = substr($text, 0, $lastPunctuation + 1);
}

Użycie funkcji wordwrap()

Funkcja wordwrap() może być również użyteczna, jeżeli chcemy, aby skrócony tekst nie przecinał słów na końcu.

php
$wrappedText = wordwrap($text, 50, "\n");
$lines = explode("\n", $wrappedText);
$shortText = $lines[0];

Biblioteki zewnętrzne

Jeśli potrzebujesz zaawansowanego skracania tekstu, możesz również rozważyć użycie bibliotek zewnętrznych. Niektóre z nich oferują bardzo zaawansowane opcje, takie jak skracanie tekstu z uwzględnieniem znaczników HTML czy różnych reguł gramatycznych.

Użycie wyrażeń regularnych

Jeżeli twoje potrzeby są bardziej specyficzne, możesz skorzystać z wyrażeń regularnych do skracania tekstu. Na przykład, możesz chcieć skrócić tekst do ostatniego pełnego zdania, które kończy się na jeden z wybranych znaków interpunkcyjnych (’.’, ’!’, ’?’).

php
preg_match('/^.{0,50}(?:\.|\?|!)?/', $text, $matches);
$shortText = $matches[0];

Czystość i czytelność tekstu

Jest to szczególnie ważne, jeżeli twój skrócony tekst będzie wyświetlany obok innych elementów na stronie. Upewnij się, że skrócony tekst jest czytelny i nie wprowadza w błąd.

Traktowanie znaczników HTML

Jeśli twój tekst zawiera znaczniki HTML, musisz być bardziej ostrożny, skracając go, aby nie zniszczyć struktury dokumentu. Możesz użyć bibliotek takich jak HtmlPurifier lub korzystać z PHP DOMDocument do parsowania i modyfikowania HTML-a.

php
$dom = new DOMDocument();
$dom->loadHTML($text);
// Odpowiednie operacje na drzewie DOM

Kombinowanie różnych metod

Najlepsze efekty można osiągnąć, kombinując różne metody. Na przykład, możesz najpierw użyć wordwrap() do podziału tekstu na linie, a następnie znaleźć ostatnią interpunkcję w ostatniej linii i dodać trzy kropki na końcu.

Kontrola jakości

Nie zapomnij przetestować różnych przypadków, żeby upewnić się, że twój skrócony tekst wygląda dobrze i jest zrozumiały dla użytkownika. Może to wymagać iteracyjnego procesu testowania i dostosowywania.

Zastosowanie w praktyce

Skoro już znamy różne techniki skracania tekstu, warto je teraz zastosować w rzeczywistym projekcie. Możesz na przykład stworzyć funkcję pomocniczą, która będzie używana do skracania tekstu w różnych częściach twojego serwisu.

php
function shortenText($text, $length = 50, $append = '...') {
$shortText = mb_substr($text, 0, $length, 'UTF-8');
$lastSpace = strrpos($shortText, ' ');

if ($lastSpace !== false) {
$shortText = mb_substr($shortText, 0, $lastSpace, 'UTF-8');
}
return $shortText . $append;
}

Z taką funkcją skrócenie tekstu stanie się znacznie łatwiejsze i bardziej spójne na całej stronie.

Optymalizacja wydajności

W kontekście dużych aplikacji, zwróć uwagę na wydajność różnych metod skracania tekstu. Wykorzystanie wyrażeń regularnych i operacji na drzewie DOM może być czasochłonne, szczególnie dla długich tekstów. W takich przypadkach warto zastanowić się nad cachowaniem skróconych wersji tekstów, aby uniknąć niepotrzebnych obliczeń.

Zastosowanie w systemach CMS

Jeżeli używasz systemu zarządzania treścią (CMS), wiele z nich oferuje wbudowane opcje do skracania tekstu. Jeżeli jednak potrzebujesz bardziej zaawansowanego rozwiązania, możesz zaimplementować własną funkcję, korzystając z wyżej opisanych metod, i dodać ją jako wtyczkę do twojego CMS-a.

Personalizacja dla użytkownika

Inną zaawansowaną techniką jest personalizacja skróconego tekstu w zależności od użytkownika. Na przykład, jeżeli użytkownik zaznaczył, że jest zainteresowany określonym tematem, możesz skrócić tekst w taki sposób, aby pokazać zdania dotyczące tego tematu.

Obsługa różnych formatów tekstu

Jeżeli tekst, który chcesz skrócić, pochodzi z różnych źródeł i ma różne formaty (np. Markdown, HTML, zwykły tekst), konieczne może być użycie różnych metod skracania dla każdego z nich. Warto wtedy zastanowić się nad stworzeniem uniwersalnej funkcji, która najpierw wykryje format, a potem zastosuje odpowiednią metodę skracania.

Podsumowanie danych statystycznych

Jeśli masz dużą ilość danych tekstowych do skrócenia, może być również użyteczne wygenerowanie pewnych danych statystycznych. Na przykład, możesz śledzić, jak często użytkownicy klikają, aby przeczytać cały tekst, w zależności od użytej metody skracania. To może dać ci cenne wskazówki, jak zoptymalizować proces.

Zastosowanie w sztucznej inteligencji

W ostatnich latach rośnie również zastosowanie technik uczenia maszynowego w analizie tekstu. Możesz zastanowić się nad wykorzystaniem takich metod dla bardziej zaawansowanego skracania tekstu, który nie tylko będzie krótszy, ale również bardziej związany z kontekstem czy zainteresowaniami użytkownika.

Wprowadzenie zmian w czasie

Ostatecznie, warto pamiętać, że metody skracania tekstu mogą wymagać dostosowania w miarę jak zmienia się twój serwis internetowy, technologie czy potrzeby użytkowników. Regularne przeglądy i aktualizacje są więc kluczowe.