Witaj Gościu Zaloguj się lub zarejestruj się.
Zaloguj

Wyrywek, wypis, fragment, zajawka - jak to zrobić za pomocą PHP?

Wyrywek, wypis, fragment, zajawka - jak to zrobić za pomocą PHP?

Jak zwał tak zwał - chodzi o krótki wycinek wpisu, który na blogach zachęca do dalszego czytania. Koncepcja jest bardzo prosta, jednak w jaki sposób ją wykonać w PHP?

W tym tutorialu wykonamy najprostszy sposób na uniwersalny skrypt wykonujący całość za nas. Nawet sobie nie wyobrażasz, ile może Ci to zaoszczędzić czasu.

Kilka słów wstępu

Ten wpis jest dedykowany osobom, które posiadają własne konstrukcje blogów/portali i chcą stworzyć prosty skrypt, który będzie im generował wycinki danego tekstu zgodnie z przekazanymi parametrami. Jeżeli natomiast posiadasz stronę stworzoną na silniku Wordpress, Joomla itp., to lepiej jest poszukać wtyczki, która wykona to za Ciebie.

Jednocześnie ten wpis służy wszystkim w ramach nauki i zdobywania umiejętności. Największym problemem w programowaniu jest znalezienie pomysłu zastosowania konkretnych opcji/funkcji/możliwości a później ich realizacja. W tym tygodniu na blogu pojawi się wpis z zadaniami, które pomogą Ci przy takiej pracy - bądź czujny!


Początek pracy

Jak już wcześniej wspomniałem, całość zostanie wykonana w języku PHP. Dlaczego? Ponieważ doskonale się do tego nadaje, jest dość prosty i każdy na swoim hostingu ma go domyślnie aktywowanego w przeciwieństwie do innych jak Ruby, Python itp.. Bierzemy się do pracy!


 

Krok pierwszy - pobranie tekstu do zmiennej.

W tym tutorialu nie omawiam sposobów pobierania tekstów z bazy, plików czy innych źródeł. Z góry zakładam, że tekst posiadasz przypisany do zmiennej podobnie jak zrobiłem to ja.

Dla uproszczenia zadania wykonamy całość na dość krótkim fragmencie. Nie ma to jednak znaczenia dla całego poradnika, ponieważ skrypt, który stworzymy będzie mógł przyjmować dowolne parametry jak długość zajawki.


 

Krok drugi - wyznaczenie parametrów.

Tworzę dodatkowe zmienne, które będą przechowywały właściwości wykonawcze.

Powyższa zmienna przechowuje maksymalną liczbę znaków, które zostaną wyświetlone. Oznacza to, że gdyby w przypadku ucięcia tekstu po 80 znakach pojawiła się spacja, to tyle się ich wyświetli. W innych przypadkach mniej.

Ostrzeżenie Ostrzeżenie Jeżeli daną zajawkę będziesz wstawiać do kontenera o rozmiarach "na styk", tzn. o takiej szerokości, aby np. w jednej linii mieścił się tekst, to powinieneś przeprowadzić teksty. We wszystkich czcionkach (poza monospace) różne znaki mają różne szerokości - w przypadku różnych tekstów o identycznej liczbie znaków tekst może się wyświetlać z różną szerokością. Najlepiej przeprowadzić testy na tekście z samymi literami "w", ponieważ mają największą szerokość.

 

Krok trzeci - przycięcie tekstu

Przyszedł czas na przycięcie tekstu na odpowiednią długość. Zrobimy to za pomocą funkcji PHP mb_substr. Przyjmuje ona 2 lub 3 parametry. Pierwszy to tekst, drugi to początek (miejsce, od którego ma uciąć) oraz opcjonalny koniec (miejsce, do którego ma uciąć). Nas interesuje wszystkie 3 parametry.

Dzięki powyższej linijce od teraz w zmiennej $tekst mamy nasz skrócony tekst

Ostrzeżenie Ostrzeżenie W powyższym kodzie przypisaliśmy skrócony tekst do zmiennej, w której znajdował się pełen tekst. Oznacza to, że od tej chwili nie posiadamy dostępu do oryginalnego, pełnego tekstu. Zrobiłem tak, ponieważ zazwyczaj w przypadku wyświetlania zajawki nie używa się całości. Jeżeli Ty jednak go potrzebujesz - utwórz nową zmienną i do niej przypisz wynik działania funkcji mb_substr.

Ciekawostka Ciekawostka Użyliśmy funkcji mb_substr zamiast substr, ponieważ zakładam, że tekst będzie zawierał polskie znaki. Wielu początkujących popełnia błąd z użyciem tej drugiej i później boryka się z problemami braku polskich "ogonków" - zwróć na to uwagę i sprawdź sam!

 

Krok czwarty - poprawki

Jeżeli wyświetlisz zmienną $tekst w tym momencie (zawierającej wynik działania poprzedniej funkcji) to ujrzysz coś takiego:

Nullam id dolor id nibh ultricies vehicula ut id elit. Aenean lacinia bibendum n

Jak widzisz, ostatnie słowo zostało w połowie ucięte. Tak będzie się działo w większości przypadków, a to nie jest to, czego oczekujemy. Aby to zmienić, musimy znaleźć w tekście pozycję ostatniej spacji. Użyjemy do tego celu funkcji strrpos, która zwraca liczbę, która stanowi pozycję wystąpienia ostatniego podanego znaku, w naszym przypadku, spacji.

Powyższa linijka kodu zwróci wartość 78 i rzeczywiście tak jest - ostatni pozycja jest za "n", 79 przed "n" a 78 przed spacją.


 

Krok piąty - ponowne cięcie

Czy po powyższym kroku domyślasz się, co należy teraz zrobić? Ponownie przyciąć nasz tekst.

Teraz nasz tekst ma 78 znaków. Każdy tekst może mieć inną, zwróć na to uwagę.


Całość razem

Oto skrypt, który stworzyliśmy w całej swojej okazałości:

Ostatnią linijkę dodałem do wyświetlenia wyniku naszych prac. Jak widzisz, pięć prostych linijek (które można by było jeszcze bardziej zredukować) spełnia całe swoje zadania. Oczywiście nic nie stoi na przeszkodzie, aby jeszcze bardziej sobie ułatwić sprawę, wykonując z tego funkcję przyjmującą tekst i jego długość - wtedy cały skrypt staje się jeszcze bardziej uniwersalny:

Proste, prawda? W tym skrypcie największym problemem jest część, która odpowiada za "odcięcie" ostatniego wyrazu w przypadku, gdy jest on "ucięty". Reszta jest przysłowiową "bułką z masłem".


Podsumowując

Pozornie proste zadanie może stać się czasami udręką. Na szczęście PHP jako jeden z niewielu języków ma ogrom wbudowanych przydatnych funkcji. Wystarczy nieco poszukać i całość się natychmiastowo rozjaśnia.

A wy, czy macie jakieś zadania, które są banalne z definicji a sprawiają duże problemy w realizacji? Chętnie sprawdzimy, z jakimi problemami borykacie się na co dzień ;)

Inne wpisy, które mogą Cię zainteresować

Poniżej przedstawiamy Ci propozycje innych wpisów, które mogą Cię zainteresować. Sprawdź, czytaj i poszerzaj swoją wiedzę.


Czytaj
Tablice informatyczne CSS (Cheat Sheet) - gotowe!

Tablice informatyczne CSS (Cheat Sheet) - gotowe!

Czytaj
Kurs HTML 5 już tutaj jest!

Kurs HTML 5 już tutaj jest!

Czytaj
Wybór palety kolorów na stronę internetową. Kilka porad

Wybór palety kolorów na stronę internetową. Kilka porad

Czytaj
Formularze w HTML 5 - zmiany i nowości

Formularze w HTML 5 - zmiany i nowości

Komentarze do tego wpisu


comments powered by Disqus