Funkcja PHP tworząca emoty

05 kwietnia 2008

Kiedyś, na potrzeby osada.pl, napisałem funkcję, która tworzy popularne emoty. Teraz ją udostępniam, może komuś się to przyda :)

Funkcja, na tle innych, wyróżnia się szybkością działania. Jest szybsza od eregi_replace, szybsza od str_ireplace, szybsza nawet od zwykłego str_replace. Działa na PHP 4 i PHP 5 i radzi sobie bez względu na to czy ktoś napisze <dupa>, <DUPA> czy nawet <DuPa> :)

Poniżej wyniki testów prędkości. Każda funkcja przechodzi dwadzieścia jeden różnych testów. Od najprostszych, tylko z kilkoma znakami, po długie teksty z różną wielkością liter i różnymi błędami, które mogą popełnić użytkownicy przy wpisywaniu wiadomości. Każda funkcja przeszła po sto razy każdy test po czym policzyłem średnią prędkość działania. Kolorowe cyfry 1, 2, 3 i 4 określają pozycję od najszybszej do najwolniejszej funkcji.

 
1)
2)
3)
4)
5)
6)
7)
 8)
9)
10)
11)
12)
13)
14)
15)
16)
17)
18)
19)
20)
21)
moja funkcja
0.000334 - 1
0.000324 - 1
0.000327 - 1
0.000320 - 1
0.000311 - 1
0.000313 - 1
0.000316 - 1
0.000321 - 1
0.000328 - 1
0.000364 - 1
0.000383 - 1
0.000364 - 1
0.000318 - 1
0.000379 - 1
0.000341 - 1
0.000335 - 1
0.000508 - 1
0.000627 - 1
0.000591 - 1
0.000376 - 1
0.000431 - 1
str_replace
0.000591 - 2
0.000631 - 2
0.000655 - 2
0.000652 - 2
0.000604 - 2
0.000608 - 2
0.000602 - 2
0.000613 - 2
0.000633 - 2
0.000616 - 2
0.000680 - 2
0.000657 - 2
0.000614 - 2
0.000623 - 2
0.000641 - 2
0.000650 - 2
0.000898 - 2
0.000989 - 2
0.000912 - 2
0.000749 - 2
0.000795 - 2
str_ireplace
0.000953 - 3
0.001699 - 4
0.001674 - 4
0.001592 - 4
0.000665 - 3
0.000667 - 3
0.000689 - 3
0.001727 - 3
0.002470 - 4
0.001668 - 3
0.003568 - 3
0.003538 - 3
0.000919 - 3
0.001987 - 3
0.002695 - 4
0.001910 - 3
0.012499 - 3
0.021321 - 4
0.015841 - 3
0.008021 - 3
0.010630 - 3
eregi_replace
0.001520 - 4
0.001119 - 3
0.001092 - 3
0.001055 - 3
0.001117 - 4
0.001096 - 4
0.001224 - 4
0.004169 - 4
0.001450 - 3
0.003697 - 4
0.010012 - 4
0.009904 - 4
0.001310 - 4
0.004544 - 4
0.001579 - 3
0.003944 - 4
0.037863 - 4
0.009864 - 3
0.045065 - 4
0.023723 - 4
0.032894 - 4


Jak widać, wyniki są bardzo zadowalające :) Funkcja w sam raz dla maniaków optymalizacji :) Dla wszystkich dwudziestu jeden testów sprawdziłem również czy generowane teksty są takie same dla mojej funkcji i str_ireplace oraz eregi_replace. Wynik oczywiście pozytywny, wszystkie trzy funkcje wypluwają identyczny tekst a więc wszystko działa poprawnie.

A teraz sama funkcja:

PHP:
  1. function tworz_emoty($tekst)
  2. {
  3. $tablica_emoty_1=array();
  4. $tablica_emoty_2=array();
  5.  
  6. $poz=0;
  7. $zwroc='';
  8.  
  9. for(;;)
  10. {
  11. $poz1=strpos($tekst, '&lt;', $poz);
  12.  
  13. if($poz1!==false)
  14. {
  15. $zwroc.=substr($tekst, $poz, $poz1-$poz);
  16. $poz=$poz1+4;
  17. $poz2=strpos($tekst, '&gt;', $poz);
  18.  
  19. if($poz2!==false)
  20. {
  21. $emot=substr($tekst, $poz, $poz2-$poz);
  22. $poz3=strrpos($emot, '&lt;');
  23.  
  24. if($poz3!==false)
  25. {
  26. $zwroc.='&lt;'.substr($emot, 0, $poz3);
  27. $emot=substr($emot, $poz3+4);
  28. }
  29.  
  30. $emot_maly=strtolower($emot);
  31. $poz=$poz2+4;
  32.  
  33. if(isset($tablica_emoty_1[$emot_maly]))
  34. {
  35. $zwroc.='<img src="emoty/'.$tablica_emoty_1[$emot_maly].'" title="<'.$emot_maly.'>" /> ';
  36. //$tekst=str_replace('&lt;'.$emot_maly.'&gt;', '<img src="emoty/'.$tablica_emoty_1[$emot_maly].'" title="<'.$emot_maly.'>" /> ', $tekst);
  37. }
  38. else
  39. {
  40. $zwroc.='&lt;'.$emot.'&gt;';
  41. }
  42. }
  43. else
  44. {
  45. $zwroc.='&lt;';
  46. break;
  47. }
  48. }
  49. else
  50. {
  51. break;
  52. }
  53. }
  54. $zwroc.=substr($tekst, $poz);
  55.  
  56. foreach($tablica_emoty_2 as $klucz => $wartosc)
  57. {
  58. $zwroc=str_replace(str_replace(array('<', '>'), array('&lt;', '&gt;'),$klucz), '<img src="emoty/'.$wartosc.'" title="'.$klucz.'" /> ', $zwroc);
  59. }
  60.  
  61. return $zwroc;
  62. }

Jeżeli ktoś tego potrzebuje to proszę sobie samemu sformatować kod :P Tekst w którym chcemy zamienić emoty na grafikę musi być najpierw potraktowany funkcją htmlspecialchars. Powody są chyba oczywiste, większość stron nie pozwala na umieszczanie kodu HTML w treściach wysyłanych przez użytkowników. Można oczywiście to zmienić ale to już wtedy proszę zmieniać funkcję we własnym zakresie :) Nie będzie to trudne.

Pamiętajcie aby podać prawidłowe ścieżki w <img />.

Na początku funkcji mamy zainicjowane dwie tablice: $tablica_emoty_1 i $tablica_emoty_2. Każdy musi je sobie sam wypełnić w zależności od tego jakie emoty chcemy udostępniać i jakie pliki graficzne mają je reprezentować. W pierwszej tablicy muszą się znajdować wszystkie emoty, które mają postać <tekst>. Natomiast w drugiej tablicy umieszczamy wszystko inne. Zresztą takie przykładowe, wypełnione tablice prezentuję poniżej. Radzę wszystko wstawić na sztywno do pliku PHP. Oczywiście można też budować tablice dynamicznie na podstawie danych np. z bazy danych ale wtedy całą optymalizację szlag trafi :P Jakby ktoś chciał zbudować jakiś panel do zarządzania emotami i funkcję, która sama buduje tablice i np. zapisuje wszystko do pliku to poniższe wyrażenie regularne rozwiąże problem do której tablicy emot powinien należeć.

PHP:
  1. if(eregi('^[a-z0-9\-_]+$', $emot)) {
  2. // $tablica_emoty_1
  3. } else {
  4. // $tablica_emoty_2
  5. }

Sama funkcja jest podzielona na dwie części ale niech każdy zainteresowany sam rozezna się jak to działa :) Dodam tylko jedną uwagę do tego kawałka kodu, który jest wstawiony jako komentarz. Robiłem testy zarówno z tym kodem jak i bez niego, wyniki są bardzo różne, raz jest szybciej, raz wolniej ale różnice są minimalne. Jeżeli ktoś prowadzi stronę np. dla młodzieży gdzie ludzie dość często nadużywają emot i wstawiają po kilkanaście takich samych to można tą linijkę odkomentować.

Poniżej tablice $tablica_emoty_1 i $tablica_emoty_2, których ja używam. Są bardzo rozbudowane i powinny wszystkich zaspokoić :)

PHP:
  1. $tablica_emoty_1 = array('zly7' => 'zly7.gif" width="18" height="18',
  2. 'zly6' => 'zly6.gif" width="20" height="20',
  3. 'zly5' => 'zly5.gif" width="41" height="26',
  4. 'zly4' => 'zly4.gif" width="18" height="22',
  5. 'kot3' => 'kot3.gif" width="24" height="23',
  6. 'nie_ja' => 'nie_ja.gif" width="24" height="21',
  7. 'piwo3' => 'piwo3.gif" width="59" height="21',
  8. 'rotfl3' => 'rotfl3.gif" width="80" height="18',
  9. 'zly3' => 'zly3.gif" width="18" height="18',
  10. 'alarm2' => 'alarm2.gif" width="18" height="24',
  11. 'aniolek' => 'aniolek.gif" width="27" height="26',
  12. 'chory2' => 'chory2.gif" width="22" height="22',
  13. 'cool2' => 'cool2.gif" width="61" height="20',
  14. 'cwicze2' => 'cwicze2.gif" width="32" height="18',
  15. 'diabel2' => 'diabel2.gif" width="37" height="31',
  16. 'hmm' => 'hmm.gif" width="25" height="23',
  17. 'jezor2' => 'jezor2.gif" width="20" height="20',
  18. 'kot2' => 'kot2.gif" width="24" height="23',
  19. 'matrix2' => 'matrix2.gif" width="18" height="18',
  20. 'mikolaj2' => 'mikolaj2.gif" width="57" height="29',
  21. 'mikolajowie2' => 'mikolajowie2.gif" width="74" height="28',
  22. 'mruga2' => 'mruga2.gif" width="20" height="20',
  23. 'pirat2' => 'pirat2.gif" width="21" height="23',
  24. 'piwo2' => 'piwo2.gif" width="60" height="18',
  25. 'pomysl2' => 'pomysl2.gif" width="22" height="26',
  26. 'przytul2' => 'przytul2.gif" width="47" height="27',
  27. 'rotfl2' => 'rotfl2.gif" width="28" height="23',
  28. 'sciana2' => 'sciana2.gif" width="46" height="20',
  29. 'sekret2' => 'sekret2.gif" width="45" height="30',
  30. 'serce2' => 'serce2.gif" width="16" height="14',
  31. 'serduszka2' => 'serduszka2.gif" width="31" height="19',
  32. 'spie2' => 'spie2.gif" width="29" height="29',
  33. 'telefon2' => 'telefon2.gif" width="44" height="26',
  34. 'usta2' => 'usta2.gif" width="18" height="18',
  35. 'wampir2' => 'wampir2.gif" width="68" height="25',
  36. 'wariat2' => 'wariat2.gif" width="20" height="27',
  37. 'wsciekly2' => 'wsciekly2.gif" width="20" height="20',
  38. 'ysz2' => 'ysz2.gif" width="20" height="20',
  39. 'zawstydzony2' => 'zawstydzony2.gif" width="18" height="18',
  40. 'zeby2' => 'zeby2.gif" width="20" height="21',
  41. 'zimno2' => 'zimno2.gif" width="26" height="32',
  42. 'zly2' => 'zly2.gif" width="18" height="18',
  43. 'aaa' => 'aaa.gif" width="20" height="20',
  44. 'agresywny' => 'agresywny.gif" width="36" height="27',
  45. 'aikido' => 'aikido.gif" width="50" height="30',
  46. 'alarm' => 'alarm.gif" width="18" height="24',
  47. 'albert' => 'albert.gif" width="26" height="34',
  48. 'ali_g' => 'ali_g.gif" width="20" height="22',
  49. 'alkoholik' => 'alkoholik.gif" width="40" height="20',
  50. 'pijak' => 'alkoholik.gif" width="40" height="20',
  51. 'aniol' => 'aniol.gif" width="18" height="24',
  52. 'batman' => 'batman.gif" width="20" height="27',
  53. 'bawie_sie' => 'bawie_sie.gif" width="38" height="24',
  54. 'beksa' => 'beksa.gif" width="40" height="18',
  55. 'bije' => 'bije.gif" width="65" height="26',
  56. 'blazen' => 'blazen.gif" width="43" height="30',
  57. 'blondynka' => 'blondynka.gif" width="26" height="24',
  58. 'bluesbrother' => 'bluesbrother.gif" width="26" height="24',
  59. 'bobas' => 'bobas.gif" width="20" height="22',
  60. 'bobr' => 'bobr.gif" width="38" height="25',
  61. 'bogacz' => 'bogacz.gif" width="18" height="18',
  62. 'boje_sie' => 'boje_sie.gif" width="39" height="20',
  63. 'boks' => 'boks.gif" width="30" height="30',
  64. 'brawo' => 'brawo.gif" width="31" height="25',
  65. 'brunetka' => 'brunetka.gif" width="35" height="31',
  66. 'brzydal' => 'brzydal.gif" width="20" height="19',
  67. 'bukiet' => 'bukiet.gif" width="28" height="18',
  68. 'calus' => 'calus.gif" width="50" height="30',
  69. 'cfaniak' => 'cfaniak.gif" width="23" height="20',
  70. 'cwaniak' => 'cfaniak.gif" width="23" height="20',
  71. 'charliechaplin' => 'charliechaplin.gif" width="20" height="25',
  72. 'chatownik' => 'chatownik.gif" width="41" height="17',
  73. 'chemik' => 'chemik.gif" width="29" height="25',
  74. 'chory' => 'chory.gif" width="20" height="20',
  75. 'chytry' => 'chytry.gif" width="22" height="20',
  76. 'cisza' => 'cisza.gif" width="30" height="26',
  77. 'cmok' => 'cmok.gif" width="40" height="18',
  78. 'cool' => 'cool.gif" width="20" height="20',
  79. 'co_jest' => 'co_jest.gif" width="18" height="28',
  80. 'cwicze' => 'cwicze.gif" width="35" height="21',
  81. 'czarodziej' => 'czarodziej.gif" width="24" height="30',
  82. 'czerwona_kartka' => 'czerwona_kartka.gif" width="50" height="32',
  83. 'czytaj' => 'czytaj.gif" width="26" height="26',
  84. 'detektyw' => 'detektyw.gif" width="22" height="22',
  85. 'diabel' => 'diabel.gif" width="22" height="25',
  86. 'dealer' => 'diler.gif" width="21" height="21',
  87. 'diler' => 'diler.gif" width="21" height="21',
  88. 'dlon_nie' => 'dlon_nie.gif" width="18" height="18',
  89. 'dlon_tak' => 'dlon_tak.gif" width="18" height="18',
  90. 'dobrze' => 'dobrze.gif" width="26" height="23',
  91. 'doktor' => 'doktor.gif" width="57" height="27',
  92. 'dostal' => 'dostal.gif" width="23" height="20',
  93. 'do_mikrofonu' => 'do_mikrofonu.gif" width="34" height="24',
  94. 'drink' => 'drink.gif" width="25" height="37',
  95. 'dupa' => 'dupa.gif" width="26" height="27',
  96. 'dziadek' => 'dziadek.gif" width="29" height="31',
  97. 'dziekuje' => 'dziekuje.gif" width="57" height="38',
  98. 'eee' => 'eee2.gif" width="20" height="21',
  99. 'elvis' => 'elvis.gif" width="18" height="22',
  100. 'email' => 'email.gif" width="18" height="24',
  101. 'fajka' => 'fajka.gif" width="32" height="20',
  102. 'farmer' => 'farmer.gif" width="29" height="26',
  103. 'flipiflap' => 'flipiflap.gif" width="33" height="22',
  104. 'gafa' => 'gafa.gif" width="30" height="26',
  105. 'gazeta' => 'gazeta.gif" width="25" height="25',
  106. 'glaszcze' => 'glaszcze.gif" width="46" height="20',
  107. 'glina' => 'glina.gif" width="20" height="28',
  108. 'glodny' => 'glodny.gif" width="25" height="25',
  109. 'glowka' => 'glowka.gif" width="20" height="47',
  110. 'glupek' => 'glupek.gif" width="18" height="28',
  111. 'glupi' => 'glupi.gif" width="29" height="23',
  112. 'gosciu' => 'gosciu.gif" width="21" height="21',
  113. 'gra' => 'gra.gif" width="27" height="23',
  114. 'gwiazdki' => 'gwiazdki.gif" width="35" height="29',
  115. 'hahaha' => 'hahaha.gif" width="32" height="20',
  116. 'harcerz' => 'harcerz.gif" width="29" height="33',
  117. 'harrypotter' => 'harrypotter.gif" width="21" height="22',
  118. 'hehe' => 'hehe.gif" width="20" height="20',
  119. 'hihihi' => 'hihihi.gif" width="20" height="25',
  120. 'hitler' => 'hitler.gif" width="20" height="20',
  121. 'hm' => 'hm.gif" width="17" height="17',
  122. 'huh' => 'huh.gif" width="20" height="20',
  123. 'hura' => 'hura.gif" width="42" height="27',
  124. 'indianin' => 'indianin.gif" width="30" height="29',
  125. 'jablko' => 'jablko.gif" width="40" height="40',
  126. 'jaskiniowiec' => 'jaskiniowiec.gif" width="30" height="23',
  127. 'jezor' => 'jezor.gif" width="20" height="20',
  128. 'jezus' => 'jezus.gif" width="20" height="26',
  129. 'jupi' => 'jupi.gif" width="28" height="30',
  130. 'kamikaze' => 'kamikaze.gif" width="24" height="20',
  131. 'kapitan' => 'kapitan.gif" width="18" height="26',
  132. 'karabiny' => 'karabiny.gif" width="52" height="25',
  133. 'karty' => 'karty.gif" width="28" height="28',
  134. 'kawa' => 'kawa.gif" width="32" height="24',
  135. 'kibice' => 'kibice.gif" width="72" height="35',
  136. 'kijem' => 'kijem.gif" width="60" height="22',
  137. 'killer' => 'killer.gif" width="54" height="19',
  138. 'klamca' => 'klamca.gif" width="20" height="18',
  139. 'klaun' => 'klaun.gif" width="28" height="18',
  140. 'kleopatra' => 'kleopatra.gif" width="24" height="26',
  141. 'klnie' => 'klnie.gif" width="33" height="37',
  142. 'klotnia' => 'klotnia.gif" width="60" height="24',
  143. 'kowboj' => 'kowboj.gif" width="27" height="26',
  144. 'krol' => 'krol.gif" width="28" height="28',
  145. 'kupidyn' => 'kupidyn.gif" width="37" height="25',
  146. 'list' => 'list.gif" width="30" height="32',
  147. 'lody' => 'lody.gif" width="22" height="25',
  148. 'lol' => 'lol.gif" width="18" height="18',
  149. 'lowca' => 'lowca.gif" width="48" height="38',
  150. 'magik' => 'magik.gif" width="42" height="31',
  151. 'maluje' => 'maluje.gif" width="53" height="38',
  152. 'malzenstwo' => 'malzenstwo.gif" width="48" height="35',
  153. 'mario' => 'mario.gif" width="21" height="20',
  154. 'marudzi' => 'marudzi.gif" width="36" height="26',
  155. 'matrix' => 'matrix.gif" width="83" height="18',
  156. 'mdleje' => 'mdleje.gif" width="20" height="20',
  157. 'mikolaj' => 'mikolaj.gif" width="26" height="29',
  158. 'mikolajowie' => 'mikolajowie.gif" width="44" height="28',
  159. 'milosc' => 'milosc.gif" width="37" height="37',
  160. 'mnich' => 'mnich.gif" width="40" height="40',
  161. 'modle_sie' => 'modle_sie.gif" width="18" height="30',
  162. 'mopoglowy' => 'mopoglowy.gif" width="20" height="19',
  163. 'motor' => 'motor.gif" width="38" height="33',
  164. 'mruga' => 'mruga.gif" width="20" height="20',
  165. 'mumia' => 'mumia.gif" width="21" height="18',
  166. 'murzyn' => 'murzyn.gif" width="18" height="24',
  167. 'napoleon' => 'napoleon.gif" width="28" height="28',
  168. 'nauka' => 'nauka.gif" width="35" height="20',
  169. 'nie_powiem' => 'nie_powiem.gif" width="19" height="19',
  170. 'nie_wiem' => 'nie_wiem.gif" width="32" height="20',
  171. 'nonono' => 'nonono.gif" width="25" height="25',
  172. 'nununu' => 'nununu.gif" width="27" height="24',
  173. 'obiad' => 'obiad.gif" width="31" height="26',
  174. 'oczy' => 'oczy.gif" width="20" height="20',
  175. 'okularnik' => 'okularnik.gif" width="30" height="30',
  176. 'omg' => 'omg.gif" width="30" height="20',
  177. 'onajego' => 'onajego.gif" width="20" height="20',
  178. 'oops' => 'oops.gif" width="48" height="49',
  179. 'osama' => 'osama.gif" width="18" height="25',
  180. 'paa' => 'paa.gif" width="26" height="18',
  181. 'pada' => 'pada.gif" width="32" height="36',
  182. 'paker' => 'paker.gif" width="32" height="20',
  183. 'palacz' => 'palacz.gif" width="46" height="20',
  184. 'paluszki' => 'paluszki.gif" width="30" height="24',
  185. 'papa' => 'papa.gif" width="26" height="18',
  186. 'papiez' => 'papiez.gif" width="44" height="39',
  187. 'petarda' => 'petarda.gif" width="30" height="25',
  188. 'pff' => 'pff.gif" width="20" height="20',
  189. 'foch' => 'phi.gif" width="28" height="28',
  190. 'phi' => 'phi.gif" width="28" height="28',
  191. 'pierd' => 'pierd.gif" width="29" height="25',
  192. 'pirat' => 'pirat.gif" width="25" height="25',
  193. 'piwo' => 'piwo.gif" width="51" height="28',
  194. 'pizza' => 'pizza.gif" width="57" height="24',
  195. 'placze' => 'placze.gif" width="31" height="22',
  196. 'poddaje_sie' => 'poddaje_sie.gif" width="22" height="36',
  197. 'poklon' => 'poklon.gif" width="36" height="18',
  198. 'pokoj' => 'pokoj.gif" width="25" height="21',
  199. 'policjant' => 'policjant.gif" width="20" height="22',
  200. 'policzek' => 'policzek.gif" width="49" height="23',
  201. 'pomidor' => 'pomidor.gif" width="48" height="29',
  202. 'pomnik' => 'pomnik.gif" width="43" height="34',
  203. 'pomocy' => 'pomocy.gif" width="35" height="25',
  204. 'pomysl' => 'pomysl.gif" width="24" height="24',
  205. 'popcorn' => 'popcorn.gif" width="40" height="36',
  206. 'prezent' => 'prezent.gif" width="18" height="17',
  207. 'protest' => 'protest.gif" width="35" height="45',
  208. 'przebiegly' => 'przebiegly.gif" width="20" height="20',
  209. 'przepraszam' => 'przepraszam.gif" width="24" height="22',
  210. 'przesond' => 'przesond.gif" width="30" height="22',
  211. 'przyjaciele' => 'przyjaciele.gif" width="52" height="28',
  212. 'przytul' => 'przytul.gif" width="47" height="18',
  213. 'psikus' => 'psikus.gif" width="54" height="22',
  214. 'punk' => 'punk.gif" width="33" height="30',
  215. 'pytajnik' => 'pytajnik.gif" width="19" height="19',
  216. 'rambo' => 'rambo.gif" width="21" height="18',
  217. 'randka' => 'randka.gif" width="51" height="36',
  218. 'raper' => 'raper.gif" width="30" height="28',
  219. 'rogi' => 'rogi.gif" width="40" height="27',
  220. 'rotfl' => 'rotfl.gif" width="20" height="20',
  221. 'rower' => 'rower.gif" width="62" height="31',
  222. 'rzygi' => 'rzygi.gif" width="65" height="50',
  223. 'samobojca' => 'samobojca.gif" width="34" height="28',
  224. 'samolot' => 'samolot.gif" width="47" height="28',
  225. 'sciana' => 'sciana.gif" width="30" height="25',
  226. 'sekret' => 'sekret.gif" width="22" height="25',
  227. 'serce' => 'serce.gif" width="20" height="20',
  228. 'serduszka' => 'serduszka.gif" width="22" height="29',
  229. 'serenada' => 'serenada.gif" width="30" height="60',
  230. 'sex' => 'sex.gif" width="80" height="26',
  231. 'skacze' => 'skacze.gif" width="25" height="36',
  232. 'skazany' => 'skazany.gif" width="35" height="40',
  233. 'slonko' => 'slonko.gif" width="31" height="31',
  234. 'sluchawki' => 'sluchawki.gif" width="26" height="24',
  235. 'smerf' => 'smerf.gif" width="20" height="24',
  236. 'smierc' => 'smierc.gif" width="26" height="47',
  237. 'smrod' => 'smrod.gif" width="29" height="20',
  238. 'smutny' => 'smutny.gif" width="21" height="21',
  239. 'smutny_aniol' => 'smutny_aniol.gif" width="88" height="26',
  240. 'soczek' => 'soczek.gif" width="45" height="25',
  241. 'spam' => 'spam.gif" width="31" height="18',
  242. 'spiewa' => 'spiewa.gif" width="35" height="20',
  243. 'spoko' => 'spoko.gif" width="28" height="22',
  244. 'stop' => 'stop.gif" width="36" height="23',
  245. 'strzela' => 'strzela.gif" width="38" height="18',
  246. 'superman' => 'superman.gif" width="38" height="27',
  247. 'szampan' => 'szampan.gif" width="58" height="30',
  248. 'szef' => 'szef.gif" width="38" height="30',
  249. 'szok' => 'szok.gif" width="20" height="20',
  250. 'tak_ty' => 'tak_ty.gif" width="34" height="27',
  251. 'tancze' => 'tancze.gif" width="31" height="24',
  252. 'telefon' => 'telefon.gif" width="41" height="28',
  253. 'teletubisie' => 'teletubisie.gif" width="80" height="29',
  254. 'terefere' => 'terefere.gif" width="34" height="26',
  255. 'tort' => 'tort.gif" width="28" height="25',
  256. 'tuptup' => 'tuptup.gif" width="28" height="23',
  257. 'uczen' => 'uczen.gif" width="25" height="22',
  258. 'uscisk' => 'uscisk.gif" width="50" height="30',
  259. 'usta' => 'usta.gif" width="20" height="20',
  260. 'wampir' => 'wampir.gif" width="54" height="36',
  261. 'wanna' => 'wanna.gif" width="41" height="44',
  262. 'wariat' => 'wariat.gif" width="41" height="40',
  263. 'wiedzma' => 'wiedzma.gif" width="21" height="24',
  264. 'wiertarka' => 'wiertarka.gif" width="41" height="37',
  265. 'viking' => 'wiking.gif" width="46" height="48',
  266. 'wiking' => 'wiking.gif" width="46" height="48',
  267. 'wiktoria' => 'wiktoria.gif" width="30" height="23',
  268. 'witam' => 'witam.gif" width="42" height="28',
  269. 'wow' => 'wow.gif" width="18" height="19',
  270. 'wsciekly' => 'wsciekly.gif" width="18" height="18',
  271. 'wstydnis' => 'wstydnis.gif" width="21" height="21',
  272. 'wykrzyknik' => 'wykrzyknik.gif" width="20" height="20',
  273. 'wystawia_rece' => 'wystawia_rece.gif" width="46" height="22',
  274. 'wystraszony' => 'wystraszony.gif" width="42" height="34',
  275. 'yes' => 'yes.gif" width="42" height="30',
  276. 'zab' => 'zab.gif" width="18" height="20',
  277. 'zakochany' => 'zakochany.gif" width="18" height="18',
  278. 'zarumieniony' => 'zarumieniony.gif" width="25" height="25',
  279. 'zawstydzony' => 'zawstydzony.gif" width="20" height="20',
  280. 'zdjecie' => 'zdjecie.gif" width="27" height="21',
  281. 'zdziwiony' => 'zdziwiony.gif" width="18" height="18',
  282. 'zdziwko' => 'zdziwiony.gif" width="18" height="18',
  283. 'zeby' => 'zeby.gif" width="18" height="18',
  284. 'zegar' => 'zegar.gif" width="20" height="20',
  285. 'ziew' => 'ziew.gif" width="18" height="18',
  286. 'zimno' => 'zimno.gif" width="18" height="18',
  287. 'zle' => 'zle.gif" width="29" height="20',
  288. 'zly' => 'zly.gif" width="21" height="21',
  289. 'zniesmaczony' => 'zniesmaczony.gif" width="20" height="20',
  290. 'ban' => 'ban.gif" width="47" height="38',
  291. 'haha' => 'haha.gif" width="35" height="21',
  292. 'kot' => 'kot.gif" width="24" height="23',
  293. 'mis' => 'mis.gif" width="28" height="32',
  294. 'nie' => 'nie.gif" width="20" height="20',
  295. 'bee' => 'phi.gif" width="28" height="28',
  296. 'zygi' => 'rzygi.gif" width="65" height="50',
  297. 'sos' => 'sos.gif" width="29" height="33',
  298. 'spie' => 'spie.gif" width="38" height="23',
  299. 'super' => 'super.gif" width="40" height="26',
  300. 'tak' => 'tak.gif" width="18" height="18',
  301. 'ysz' => 'ysz.gif" width="20" height="20',
  302. 'zyd' => 'zyd.gif" width="29" height="31',
  303. 'dj' => 'dj.gif" width="28" height="28',
  304. 'ok' => 'ok.gif" width="38" height="20',
  305. 'ot' => 'ot.gif" width="44" height="49',
  306. 'wc' => 'wc.gif" width="24" height="26');
  307.  
  308. $tablica_emoty_2 = array(']:->' => 'diabel.gif" width="22" height="25',
  309. '];->' => 'diabel.gif" width="22" height="25',
  310. ']:>' => 'diabel.gif" width="22" height="25',
  311. '];>' => 'diabel.gif" width="22" height="25',
  312. ':*' => 'cmok.gif" width="40" height="18',
  313. ':-*' => 'cmok.gif" width="40" height="18',
  314. ';*' => 'cmok.gif" width="40" height="18',
  315. ';-*' => 'cmok.gif" width="40" height="18',
  316. ':-S' => 'eee.gif" width="21" height="21',
  317. ':S' => 'eee.gif" width="21" height="21',
  318. ':-]' => 'hm.gif" width="17" height="17',
  319. ':]' => 'hm.gif" width="17" height="17',
  320. ';-]' => 'hm.gif" width="17" height="17',
  321. ';]' => 'hm.gif" width="17" height="17',
  322. ':-P' => 'jezyk.gif" width="18" height="18',
  323. ':P' => 'jezyk.gif" width="18" height="18',
  324. ';-P' => 'jezyk2.gif" width="21" height="21',
  325. ';P' => 'jezyk2.gif" width="21" height="21',
  326. ':-X' => 'nie_powiem.gif" width="19" height="19',
  327. ':X' => 'nie_powiem.gif" width="19" height="19',
  328. ';-X' => 'nie_powiem.gif" width="19" height="19',
  329. ';X' => 'nie_powiem.gif" width="19" height="19',
  330. ';)' => 'oczko.gif" width="21" height="21',
  331. ';-)' => 'oczko.gif" width="21" height="21',
  332. ';(' => 'placze.gif" width="31" height="22',
  333. ';-(' => 'placze.gif" width="31" height="22',
  334. ':(' => 'smutny.gif" width="21" height="21',
  335. ':-(' => 'smutny.gif" width="21" height="21',
  336. ':)' => 'usmiech.gif" width="21" height="21',
  337. ':-)' => 'usmiech.gif" width="21" height="21',
  338. ':-/' => 'wr.gif" width="18" height="18',
  339. ':/' => 'wr.gif" width="18" height="18',
  340. ';-/' => 'wr.gif" width="18" height="18',
  341. ';/' => 'wr.gif" width="18" height="18',
  342. ':-|' => 'yyy.gif" width="21" height="21',
  343. ':|' => 'yyy.gif" width="21" height="21',
  344. ':-D' => 'zadowolony.gif" width="21" height="21',
  345. ':D' => 'zadowolony.gif" width="21" height="21',
  346. ':-O' => 'zaskoczony.gif" width="21" height="21',
  347. ':O' => 'zaskoczony.gif" width="21" height="21',
  348. ':-[' => 'zly.gif" width="21" height="21',
  349. ':[' => 'zly.gif" width="21" height="21',
  350. ':>' => 'chytry.gif" width="22" height="20',
  351. ':->' => 'chytry.gif" width="22" height="20',
  352. ';>' => 'chytry.gif" width="22" height="20',
  353. ';->' => 'chytry.gif" width="22" height="20');

Tutaj udostępniam pliczek ze wszystkimi emotami oraz z gotową do użycia funkcją. A tutaj można zobaczyć jak wyglądają wszystkie emoty :)

Na koniec prośba. Wszystko to udostępniam za darmo więc jeżeli ktoś z tego skorzysta to proszę o jakiś komentarz pod tym wpisem. Chce tylko wiedzieć, że przydała Ci się moja praca :)

PS
Gdyby jakimś cudem ktoś nie wiedział jak tego użyć to robimy to tak:

PHP:
  1. $tekst=tworz_emoty($tekst);

Dodaj komentarz

16 odpowiedzi dla tego wpisu

  1. Anonim napisał:

    :/ :P

  2. Nowy Gracz w Tomaszowskim Neci napisał:

    :P

  3. enkidu napisał:

    fajna sprawa, jednak brak mi funkcji, która parsowała by emoty poza określonymi tagami :) puszczenie kodu, czy to BBCode, czy już sparsowanego, powoduje, że linki się psują…

  4. MariuszT napisał:

    Hmmmm chyba wiem o co chodzi… Idzie zmienić tylko niestety teraz nie bardzo mam czas na zabawy z tym :/ Może jakoś potem…

  5. adi napisał:

    :D

  6. takijeden napisał:

    Jakims cudem nie wiem do konca jak tego uzyc! Jak wyswietlic na stronie wszystki emoty? Jakie pliki trzeba stworzyc i co powinno sie w nich znalezc? Dzieki na info!
    Pozdrawiam!

  7. MariuszT napisał:

    Najpierw piszą komentarz a potem marudzą na GG… :P

  8. MK2009 napisał:

    jak wstawić tę funkcję??
    za includować się nie da

  9. MariuszT napisał:

    Jeżeli masz problem z tak podstawowymi operacjami to może Ci pomóc tylko kurs/książka, nie ja.

  10. rbf666 napisał:

    dzieki wielkie :)

  11. jasiek65 napisał:

    Mam pytanie czy ma ktoś jakiś pomysł jak zastosować to na całej stronie?

  12. MariuszT napisał:

    Nikt Ci nie odpowie na tak ogólne pytanie. Pytaj o konkrety a jeżeli się na tym nie znasz to poszukaj programisty, który Ci zrobi co będziesz chciał.

  13. Jasiek65 napisał:

    Sorry…źle sformułowałem pytanie, teraz się trochę bardziej rozpisze:
    Chodzi mi oto ,że w jednym miejscu pobieram tekst z bazy mysql ,a w drugim za pomocą include. Chciałbym ,aby funkcja objęła oba teksty tak żebym nie musiał za każdym razem używać tej funkcji.

  14. MariuszT napisał:

    Nadal nie rozumiem problemu. Jak masz z bazy to masz jakąś zmienną i traktujesz ją funkcją do robienia emot. Ale jak masz include to też masz tam jakąś zmienną i możesz zrobić to samo. W czym problem?

  15. Jasiek65 napisał:

    Jak mam tak 10 razy to muszę za każdym razem dodawać, czy da się w inny sposób?
    np. żeby obsługiwało ogółem cały tekst

  16. MariuszT napisał:

    Kolego, pytasz o rzeczy stricte informatyczne a zadajesz strasznie ogólnikowe pytania. Skąd ja mam wiedzieć jak to u Ciebie zrobić skoro nie widzę kodu? Chciałbym pomóc ale nie mogę. To są proste rzeczy ale jeżeli nie radzisz sobie to poproś jakiegoś programistę PHP.

Odpowiedz



Podobne wpisy: