Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] system komentarzy + emotikony
Forum PHP.pl > Forum > Przedszkole
wiciu010
Piszę własny system komentarzy i wszystko ładnie działa tylko kompletnie nie mam pomysłu jak zrobić żeby wyświetlały sie emotikony zamiast np. smile.gif mam przygotowane odpowiednie grafiki
szopen
Dla przykładu: http://pl2.php.net/manual/en/function.strtr.php

  1. <?php
  2. $text = strtr($text, ':)' => '<img src="smile.gif" />');
  3. ?>
Skie
Bardzo prosto. Treść commenta przed wysłaniem (zapisaniem do bazy) musisz "przerzucić" przez funkcję np.

Kod
$tresc = add_emotes($tresc)


A w takiej funkcji (w tym przykladzie add_emotes) zamieniać tekst w emotki w nastepujacy sposob:

  1. <?php
  2. function add_emotes($text) {
  3. $text = str_replace(":D","<img src=usmiech.gif>", $text);
  4. return $text;
  5. }
  6. ?>


Oczywiście musiałbyś tą funkcję rozbudować, żeby wszystkie emotki uwzględniała, pozmieniać ścieżki do emotek itd.
Jeżeli wcześnej treść commenta filtrujesz jakas inna funkcja (kasowanie tagow html, lamanie linii, cenzurowanie slow itd.) to tam mozesz dorzucic te zamiany tesktu w emotki zamiast tworzyc nowa funkcje.
no_face
Lepiej byloby przezucic przez funkcje dopiero po wyciagniecu z bazy tresci komentarza.
wiciu010
Cytat(no_face @ 29.08.2008, 19:11:21 ) *
Lepiej byloby przezucic przez fun
1f52
kcje dopiero po wyciagniecu z bazy tresci komentarza.


Dlaczego?
Skie
Cytat(no_face @ 29.08.2008, 19:11:21 ) *
Lepiej byloby przezucic przez funkcje dopiero po wyciagniecu z bazy tresci komentarza.


W sumie tak też można.
no_face
Cytat(wiciu010 @ 29.08.2008, 19:20:17 ) *
Dlaczego?

By nie przechowywac zbednego kodu w bazie danych.
Mlodycompany
wyciagasz sobie tekst z bazy i przepuszczas go przez funkcje emot($str);

  1. <?php
  2. function emot($str){
  3.  
  4. $emoty = array(':)' => 'usmiech.jpg', itp);
  5.  
  6. foreach($empty as $z => $na){
  7.  
  8. $str = str_replace($z, $na, $str);
  9.  
  10. }
  11.  
  12. return($str);
  13.  
  14. }
  15.  
  16. $str = emot($str);
  17.  
  18. echo $str;
  19. ?>
szopen
Cytat(Mlodycompany @ 29.08.2008, 22:39:49 ) *
  1. <?php
  2. foreach($empty as $z => $na){
  3. $str = str_replace($z, $na, $str);
  4. }
  5. ?>

Ej... tak się nie robi raczej winksmiley.jpg Nie testowałem, ale to powinno działać wydajniej:
  1. <?php
  2. $z  = array('a','b', ... );
  3. $na = array('1','2', ... );
  4. $str = str_replace($z, $na, $str);
  5. ?>
Mlodycompany
jak dla mnie nie ma różnicy:P
szopen
Nie widzisz różnicy między jednokrotnym wywołaniem funkcji a n-krotnym jej wywoływaniem? Zrób benchmark i podziel się wynikami smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.