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.
$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.
$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()
.
$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.
$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.
$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 (’.’, ’!’, ’?’).
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.
$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.
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.