Skrypt który tutaj opisuję pozwala umieścić na stronie emotikony, które będą uruchamiane za pomocą znaków zawartych w tekście. Jeżeli chciałbyś coś takiego mieć na swojej stronie, zapraszam do lektury.
Skrypt który tutaj opisuję pozwala umieścić na stronie emotikony, które będą uruchamiane za pomocą znaków zawartych w tekście. Jeżeli chciał(a)byś coś takiego mieć na swojej stronie, zapraszam do lektury.
Założenia:
Najpierw oczywiście kilka postanowień co do funkcjonalności skryptu. -> skrypt potrzebne dane będzie odczytywał z pliku konfiguracyjnego. -> dane które będzie można ustawić to: – ścieżka do katalogu z buźkami – format pliku graficznego z buźką – nazwy plików wraz z odpowiednikami tekstowymi -> całość umieścimy w jednej klasie -> konstruktor klasy będzie ładował konfigurację -> tekst który będzie poddawany modyfikacji musi być w jednej zmiennej(ale to chyba nie problem)
Plik konfiguracji:
na dobry początek ustalamy zmienną przechowującą ścieżkę dostępu do katalogu buziek, najlepiej jak będzie ona bezwzględna, ale to twoja sprawa:
| <!– config.php –> <?php $sc = '/usr/krasnal/www/skrypty/moje/buzki/’; |
ok, w następnej zmiennej zapisujemy format pliku:
| $format = 'gif’; |
teraz musimy zainicjować tablicę w której w indeksach będziemy przechowywać nazwy plików z buźkami, a w wartościach odpowiadające im symbole tekstowe: !!! UWAGA w wartościach musisz stosować się do wyrażeń regularnych perla, gdy będziemy z nich korzystać. Ale aby sobie poradzić musisz pamiętać aby przed o po symbolu tekstowym buźki dać znak: „/”, oraz znaki specjalne takie jak nawiasy poprzedzać odwrotnym ukośnikiem „”. !!!
| $buzki = array( „smile” => '/:)/’, „sad” => '/:(/’, „happy” => '/:D/’, ); ?> |
Pamiętaj że w indeksach są nazwy bez rozszerzeń. Dobra, tym sposobem mamy gotowy plik konfiguracji zapisz go pod nazwą „config.php”, teraz zabieramy się za plik z klasą.
Klasa 'Buzki’:
Na samym początku inicjujemy nasza klasę i określamy w niej właściwości odpowiadające zmiennym z pliku konfiguracji:
| <?php class Buzki { var $sciezka; var $buzki; var $format; |
potrzebna nam będzie jeszcze jedna zmienna, w której będziemy przechowywać tablicę z fragmentami do zamiany:
| var $pliki; |
ale będzie trzeba ją odpowiednio przygotować, tzn. najpierw zamienić tablicę z buźkami tak aby w wartościach były indeksy, a w indeksach wartości, użyjemy do tego funkcji array_flip(), ale musimy jeszcze do nich dołączyć rozszerzenia i zamienić je na znaczniki HTML. Sporządzimy do tego oddzielną funkcję:
| function sciezki( $tablica ) { foreach( $tablica AS $index => $wartosc ) { $gotowa[] = '<img src=”’ . $this -> pliki . $wartosc . ’.’ . $this -> format . '”>’; } return $gotowa; } |
jak widać funkcja „przelatuje” wszystkie elementy tablicy, dołącza rozszerzenie i konwertuje całość na znacznik HTML wstawiający obrazek, wynik zapisuje w tablicy $gotowa, a całość na końcu zwraca. Teraz trzeba dołączyć plik konfiguracji i przypisać wartości jego zmiennych dla naszych właściwości. Użyjemy do tego konstruktora klasy:
| function Buzki() { include( ’./config.php’ ); $this -> sciezka = $sc; $this -> format = $format; $this -> buzki = $buzki; |
na koniec musimy zadbać o przygotowanie znaczników, do czego użyjemy wcześniej wspomnianej funkcji array_flip() i dopiero co skonstruowanej metody sciezki():
| $this -> pliki = $this -> sciezki( array_flip( $buzki ) ); } |
Świetnie, na koniec pozostało nam już tylko skonstruować metodę która w podanym łańcuchu znaków będzie konwertowała wszystkie symbole buziek na odpowiednie znaczniki wstawiające obrazki. Wbrew pozorom, będzie to bardzo proste, wykorzystamy do tego wyrażenie regularne i po sprawie. Skorzystamy z preg_replace() który zamienia pasujące wartości z jednej tablicy, odpowiednimi z drugiej, wygląda to tak:
| function zamien( $tekst ) { $wynik = preg_replace( $this -> buzki, $this -> pliki, $tekst ); return $wynik; } |
i na koniec zamykamy jeszcze definicję klasy:
| } ?> |
zapisujemy w pliku buzki.php i gotowe.
Użycie klasy „Buzki”:
Jeżeli chcemy w jakimś skrypcie użyć naszej klasy, musimy ją najpierw dołączyć:
| include(’buzki.php’); |
!!! UWAGA, jeżeli plik z klasą „Buzki” jest w innym katalogu, musisz w skrypcie zmienić ścieżkę dostępu do pliku konfiguracji, nawet jeżeli jest w tym samym katalogu co plik z klasą „Buzki”, czyli jeżeli masz np.:
| include(’./buzki/buzki.php’); |
Musisz w pliku 'buzki.php’ zmienić ścieżkę dostępu do pliku konfiguracja na ten sam katalog, czyli w tym wypadku:
| include( ’./buzki/config.php’ ); |
a to dlatego ze dołączasz plik z klasą „Buzki” do pliku w innym katalogu i to z poziomu tego właśnie katalogu będzie pobierany plik konfiguracji. Teraz tworzymy egzemplarz naszej klasy:
| $buzki = new Buzki; |
i jeżeli mamy np. w zmiennej $jakisTekst tekst w którym chcemy dokonać zamiany, wywołujemy odpowiednią metodę:
| $gotowyTekst = $buzki -> zamien( $jakisTekst ); |
i w zmiennej $gotowyTekst jest już wynik. I to już wszystko, oczywiście jak chcesz więcej buziek dodaje je w pliku konfiguracji, tak jak te przykładowe…
