Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Emotikony
kamil1114
post
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

Ostrzeżenie: (0%)
-----


Chciałbym napisać skrypt , który zamieniałby na przykład treść ":-)" na buźkę snitch.gif
Oczywiście tych buziek i komend byłoby znacznie więcej.
Jak myślicie , zrobić to w mysql'u ? Czy normalnie w php ? Ma ktoś jakiś pomysł ? Myślałem , żeby napisać mocno rozbudowaną funkcję if.

Ten post edytował kamil1114 22.10.2009, 22:34:57
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Mocno przeczytaj MANUAL!!!
STR_REPLACE


--------------------
Go to the top of the page
+Quote Post
drake88
post
Post #3





Grupa: Zarejestrowani
Postów: 283
Pomógł: 15
Dołączył: 22.03.2009
Skąd: Bytów

Ostrzeżenie: (0%)
-----


Zapraszam do lektury mojego tutoriala z innego forum.

Skrypt, który przedstawię będzie zamieniał emotikony tekstowe na obrazkowe. Musimy ustalić zmienną dla katalogu emotek, najlepiej bezwzględną:

Kod
<!-- config.php -->
<?php
    $sc = '/usr/krasnal/www/skrypty/moje/buzki/';
$format = 'gif';


Teraz zainicjujemy tabelę gdzie będziemy przechowywać nazwy plików z emotkami.

Kod
   $buzki = array(
    "smile" => '/:\)/',
    "sad" => '/:\(/',
    "happy" => '/:D/',
    );
?>


Trzeba pamiętać, iż podajemy same nazwy (bez rozszerzeń). Zapisujemy owy plik jako config.php
Określamy teraz właściwości odpowiadającego zmiennym w konfiguracji:

Kod
<?php
    class Buzki
    {
        var $sciezka;
        var $buzki;
        var $format;
var $pliki;


Zamieniamy tablicę z emotami tak, by wartości zawierały indeksy a indeksy wartości (funkcja array_flip())

Kod
function sciezki( $tablica )
        {
            foreach( $tablica AS $index => $wartosc ) {
                $gotowa[] = '<img src="' . $this -> pliki . $wartosc . '.' . $this -> format . '">';
            }
            return $gotowa;
        }


Wynik zostaje zapisany w tablicy $gotowa, jednak trzeba dołączyć plik konfiguracyjny i przypisać wartości jego zmiennych.

Kod
function Buzki()
        {
            include( './config.php' );
            $this -> sciezka = $sc;
            $this -> format = $format;
            $this -> buzki = $buzki;


Zadbać też trzeba o przygotowanie znaczników:

Kod
   $this -> pliki = $this -> sciezki( array_flip( $buzki ) );
        }


Skorzystamy teraz z preg_replace() który zamienia pasujące wartości z jednej tablicy odpowiednikami z drugiej.

Kod
  function zamien( $tekst )
        {
            $wynik = preg_replace( $this -> buzki, $this -> pliki, $tekst );
            return $wynik;
        }    
?>


Zapisujemy jako buzki.php
Teraz, aby użyć naszej klasy w skrypcie musimy ją dołączyć:

Kod
include('buzki.php');


Plik buzki.php musi zmienić ścieżkę pliku konfiguracji na ten sam katalog:

Kod
include( './buzki/config.php' );


Pozostało utworzenia egzemplarza klasy:

Kod
$buzki = new Buzki;


--------------------
Go to the top of the page
+Quote Post
kamil1114
post
Post #4





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 22.02.2008
Skąd: katowice

Ostrzeżenie: (0%)
-----


Bardzo dziękuję za udostępnienie skryptu. Niestety nie znam jeszcze OOP , ale na razie zastosuję ten skrypt , a później jak się nauczę OOP , to postaram się go zrozumieć.
Go to the top of the page
+Quote Post
Fafu
post
Post #5





Grupa: Zarejestrowani
Postów: 243
Pomógł: 33
Dołączył: 30.01.2008
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Po 1 to jest napisane pod PHP4 czyli przestarzałe...
Po 2 nie wiem po co pisać klasę skoro można użyć 1 funkcji:
  1. <?php
  2. function emotki($tekst)
  3. {
  4. //tablica z emotkami
  5. $emoty = Array(' ;)' => 'mruga2.gif',
  6. ' :/' => 'kwasny.gif',
  7. '[lol]' => 'lol.gif');
  8.  
  9. // pętla
  10. foreach($emoty as $kod => $obrazek)
  11. $tekst = str_replace($kod, '<img src="images/emoty/'.$obrazek.'">', $tekst);
  12.  
  13. //zwracamy przerobiony tekst
  14. return $tekst;
  15. }
  16. ?>


--------------------
http://rafal.brzezinski.me - skrypty, tutoriale i inne.
Jeśli udało Ci się rozwiązać problem podziękuj osobom, które ci pomogły.
Go to the top of the page
+Quote Post
thek
post
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Jest jeszcze jedna rzecz, o której niektórzy zapominają... Czasem emoty mają tekst w którego skład "wchodzą" inne emoty winksmiley.jpg Dlatego dla bezpieczeństwa lepiej byłoby pętlę zaczynać od tych najdłuższych ( czyli iluś znakowych ) schodząc do tych 2-znakowych. Poza tym str_replace zrobi robotę szybciej. A jeśli już masz ochotę się bawić to niech to będzie dodatkowa funkcja klasy wyświetlającej. Bo do bazy to musi pójść jako tekst bez przeróbek, gdyż nie wiesz czy ktoś chce oglądać posty z, czy bez emot.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 17:39