Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Jak dodać emotikony
Forum PHP.pl > Forum > Przedszkole
darkowski
Witam jak dodać emotikony do skryptu komentarzy??
skowron-line
po 1 primo to popraw tag w temacie
po 2 popraw tytul bo troche kiepski mocno
po 3 to robi sie to tak ze za masz np forki tych emotikonek i jak klikniesz na jakies to sie pokazuja jakies znaczki w polu textarea
np : D a potem jak wyswietlasz komentarz na stronie to zamieniasz takie znaczki na odpowiednie sciezki do plikow graficznych
za pomoca funkcji str_replace.

koniec cytatu.
darkowski
dzięki i sorry za źle napisany temat
a możesz mi zapodać jakiś przykad tej funkcji?(zaś pewnie głupote napisałem)
skowron-line
http://pl2.php.net/manual/en/function.str-replace.php i tu bedzie wszystko jak bedziesz mial problem to pisz i ktos napewno ci pomoze
Crozin
  1. <?php
  2.  
  3. $tekst = 'Tutaj tekst, w którym chcemy zamienić tekst na emotikonki... A tu jakaś emotka: tongue.gif ...niech będzie ta z językiem';
  4. $emotki = array(
  5. 'biggrin.gif' => '<img src="obrazek/smile.gif" />',
  6. 'tongue.gif' => '<img src="obrazek/jezyk.gif" />'
  7. );
  8. $tekst = strtr($tekst, $emotki);
  9.  
  10. echo $tekst;
  11.  
  12. ?>
Oczywiście można to napisać inaczej (np. tak, żeby nie powtarzać 45435 <img src... />) ale to jest najprostrszy przykład.
darkowski
Dzieki a jak to wstawić do tego

dodawacz.php
  1. <style type="text/css">
  2. <!--
  3. body {
  4. background-color: #000000;
  5. }
  6. .style2 {
  7. color: #FF0000;
  8. font-weight: bold;
  9. font-size: 18px;
  10. }
  11. #Layer1 {
  12. position:absolute;
  13. left:204px;
  14. top:69px;
  15. width:81px;
  16. height:22px;
  17. z-index:1;
  18. }
  19. #Layer2 {
  20. position:absolute;
  21. left:98px;
  22. top:54px;
  23. width:82px;
  24. height:20px;
  25. z-index:2;
  26. }
  27. .style3 {
  28. color: #FF0000;
  29. font-weight: bold;
  30. }
  31. -->
  32. </style>
  33. <form action="zapis.php" method="POST">
  34. <table width="100%">
  35. <tr>
  36.  <td width="1%"><div align="center"></div></td>
  37.  <td width="99%">
  38.  <div align="center"><span class="style2">Autor</span>
  39.  <span class="style2">
  40.  <input name="autor" type="text" autocomplete="on" value="" size="38" />
  41.  </span></input>
  42.  </div></td></tr>
  43. <tr>
  44.  <td width="1%"><div align="center"></div></td>
  45.  <td width="99%"> 
  46.  
  47.  <div align="center">
  48.  <span class="style2">
  49.  Treść</span>
  50.  <textarea name="tresc" cols="20" style="width: 252; height: 70;" autocomplete="off"></textarea>
  51.  </div></td>
  52. </tr>
  53. <tr>
  54. <td > </td>
  55.  <td>
  56.  
  57.  <div align="center">
  58.  <input type="submit" value="Dodaj" />
  59.  </div></td></tr>
  60. </table>
  61.  
  62. <div align="center"><span class="style3">Komentarze sa własnoscia ich  autorów. <br />
  63. Autor strony nie ponosi odpowiedzialności za ich tresć!</span>
  64. </div>
  65. </form>
  66. <table class="all" border="0" width="100%">
  67.  <tr>
  68. <td><?php include "wiadomosc.php"; ?></td>
  69.  </tr>
  70. </table>
  71. <meta http-equiv="Pragma" content="no-cache" />
  72. <div align="center"></div>


zapis.php
  1. <style type="text/css">
  2. <!--
  3. body {
  4. background-color: #CCCCCC;
  5. }
  6. a:link {
  7. color: #000000;
  8. text-decoration: none;
  9. }
  10. a:visited {
  11. text-decoration: none;
  12. color: #000000;
  13. }
  14. a:hover {
  15. text-decoration: none;
  16. color: #FF0000;
  17. }
  18. a:active {
  19. text-decoration: none;
  20. color: #FF0000;
  21. }
  22. .style2 {font-weight: bold; font-size: 36px; color: #000000;}
  23. -->
  24. </style>
  25. <p align="center" class="style2"> </p>
  26. <p align="center" class="style2">Właśnie dodałeś komentarz</p>
  27. <p align="center"><a href="dodawacz2.php"><strong>wróć</strong></a></p>
  28. <?php
  29. $tresc=$_POST['tresc'];
  30. $autor=$_POST['autor'];
  31. if ($tresc=='') {  
  32. print "Wpisz tresc komentarza";
  33. exit;} 
  34. elseif ($autor=='') {
  35.  print "Uzupelnij pole autor";exit;}
  36. else {
  37.  setlocale (LC_TIME, "pl_PL");  
  38.  $fp=fopen("dane.php","a+");  
  39.  flock($fp,LOCK_EX);  
  40.  fwrite($fp,$_POST["autor"]."|".$_POST["tresc"]."|".strftime('%e %B %G o %H:%M:%S')."\n");  
  41.  flock($fp,LOCK_UN);  
  42.  fclose($fp);}
  43.  ?>


wiadmosc.php
  1. <style type="text/css">
  2. <!--
  3. <meta http-equiv="Pragma" content="no-cache" />
  4. body {
  5. background-color: #000000;
  6. }
  7. body,td,th {
  8. color: #FFFFFF;
  9. }
  10. -->
  11. </style><?php
  12.  
  13.  $linia=explode("\n",file_get_contents("dane.php")); // kolejne linie sa zapisywane jako kolejne elementy tablicy "linia"
  14.  
  15.  $ilosc=count($linia); // ilosc linii/newsów
  16.  
  17.  for($c=$ilosc-2;$c>=3;$c--)
  18.  {
  19.  $element=explode("|",$linia[$c]); // kolejne czesci linii sa rozdzielane jako elementy tablicy "element"
  20.  echo '<table><tr><tr><tr><tr><tr><td><span style="color: #FF0000">'.$element[2].'</span></td></tr>';
  21.  echo '<tr><td><span style="color: #FF0000">Napisal: <b></span>' .$element[0].'</b></td></tr></table>';
  22.  echo '<TR><TD>   '.stripslashes($element[1]).'</TD></TR>';
  23.  }
  24.  
  25. ?>
mokry
Przeanalizuj sobie przykłady ze strony http://www.bbcode.strefaphp.net/
Tam masz dużo przykładów użycia str_replace oraz preg_replace. Poczytasz, pobawisz sie trochę i na pewno zdziałasz to co chcesz winksmiley.jpg
darkowski
A jak to
  1. <?php
  2. $dane = "jakiś sobie tekst z :) (buźką) i biggrin.gif w środku";
  3. $plik=file('emoty.txt');
  4. $ile=count($plik);
  5. for ($i1=0; $i1<$ile; $i1++){
  6.  $emoty=explode("|+|",$plikemoty[$i1]);
  7.  $dane=str_replace($emoty[0],"<img src=\"$emoty[1]\" style=\"border:0px;\"
  8. alt=\"$emoty[0]\" />",$dane);
  9. }
  10. echo "$dane";
  11. ?>

dodać do tego mojego skryptu żeby spełniało swoją role?
Lejto
tworzysz klase z funkcja emotikony otwiersz klase np $c = new klasa();
i w for dajesz $row[tresc]=$b->buzki($row[tresc]);
może trochę niezrozumiałe nie mam czasu
darkowski
Jak dla mnie to nie zrozumiałe bo nie wiem gdzie to wpisać czy do dodawacz.php czy do wiadomosc.php
Lejto
tworzysz plik z funkcjami np. funkcje.php
tam
wklejasz kod
  1. <?php
  2. class funkcja{
  3. function buzki($emotki)
  4. {
  5. $emotki = array(
  6. 'biggrin.gif' => '<img src="obrazek/smile.gif" />',
  7. 'tongue.gif' => '<img src="obrazek/jezyk.gif" />'
  8. );
  9. $tekst = strtr($tekst, $emotki);
  10. }
  11. }
  12. ?>

i pliku w którym wyświetlasz robisz:
  1. <?php
  2. require (funkcje.php); 
  3. $c = new funkcja();
  4.  
  5. for ($i1=0; $i1<$ile; $i1++){
  6. $emoty=explode("|+|",$plikemoty[$i1]);
  7. $dane=$b->buzki($dane); 
  8. $dane=str_replace($emoty[0],"<img src=\"$emoty[1]\" style=\"border:0px;\"
  9. alt=\"$emoty[0]\" />",$dane);
  10. }
  11. ?>

jeśli nie będzie działać proszę innych o poprawę szybko to pisałem więc mogłem popełnić błąd
darkowski
Wyskakuje taki bląd:

Warning: require(funkcjephp) [function.require]: failed to open stream: No such file or directory in /home/niedojeb/www/koment/wiadomosc.php on line 27

Fatal error: require() [function.require]: Failed opening required 'funkcjephp' (include_path='.:/usr/local/whcp/php5/lib/php') in /home/niedojeb/www/koment/wiadomosc.php on line 27
l0ud
Zamień:
  1. <?php
  2. require (funkcje.php);
  3. ?>

na
  1. <?php
  2. require ('funkcje.php');
  3. ?>


(oczywiście chodzi tylko o 2 linijkę, resztę forum dodało)
darkowski
Zmieniłem i już nie ma błędu ale i tak mi nie wyświetla emotek
l0ud
Jakiś dziwny był ten powyższy kod, więc napisałem od podstaw:

plik insert_smiles.php
  1. <?php
  2.  
  3. function insert_smiles($string) {
  4. $smiles_array = explode("r\n",file_get_contents('smiles.txt'));
  5. for ($i=0, $b=count($smiles_array); $i<$b; $i++) {
  6. $act_smile = explode('||',$smiles_array[$i]);
  7. $string = str_replace($act_smile[0],'<img src="'.$act_smile[1].'" border="0" alt="'.$act_smile[2].'">',$string);
  8. }
  9. return $string;
  10. }
  11.  
  12. ?>


Plik smiles.txt (przykładowa struktura)
Kod
:)||smile.gif||Usmiech
:(||sad.gif||Smutek
;)||wink.gif||Oczko


Skrypt przetwarzający tekst:

  1. <?php
  2. require('insert_smiles.php');
  3.  
  4. $dane = ':) :( ;) jakiś tekst';
  5. $dane = insert_smiles($dane);
  6.  
  7. echo $dane;
  8. ?>


Czyli wystarczy przepuścić string przez insert_smiles() smile.gif

pisane od ręki, nie zagwarantuję, że zadziała. Jak coś nie tak, to pisz smile.gif
darkowski
zrobiłem troche inaczej

dodawacz.php
  1. <style type="text/css">
  2. <!--
  3. body {
  4. background-color: #000000;
  5. }
  6. .style2 {
  7. color: #FF0000;
  8. font-weight: bold;
  9. font-size: 18px;
  10. }
  11. #Layer1 {
  12. position:absolute;
  13. left:204px;
  14. top:69px;
  15. width:81px;
  16. height:22px;
  17. z-index:1;
  18. }
  19. #Layer2 {
  20. position:absolute;
  21. left:98px;
  22. top:54px;
  23. width:82px;
  24. height:20px;
  25. z-index:2;
  26. }
  27. .style3 {
  28. color: #FF0000;
  29. font-weight: bold;
  30. }
  31. -->
  32. </style>
  33. <script type="text/javascript">
  34. function emoticon(text) {
  35.  text = ' ' + text + ' ';
  36.  if (document.post.tresc.createTextRange && document.post.tresc.caretPos) {
  37.  var caretPos = document.post.tresc.caretPos;
  38.  caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
  39.  document.post.tresc.focus();
  40.  } else {
  41.  document.post.tresc.value += text;
  42.  document.post.tresc.focus();
  43.  }
  44. }
  45. </script>
  46. <a href="javascript:emoticon('<serduszka>')"><img src="emoty/serduszka.gif" alt="Mr. Green" width="23" height="16" border="0" title="Mr. Green" /></a>
  47. <a href="javascript:emoticon('<sciana>')"><img src="emoty/sciana.gif" width="30" height="15" border="0" /></a>
  48. <a href="javascript:emoticon('<boks>')"><img src="emoty/boks.gif" width="37" height="15" border="0" /></a>
  49. <form action="zapis.php" name="post" method="POST">
  50. <table width="100%">
  51. <tr>
  52.  <td width="1%"><div align="center"></div></td>
  53.  <td width="99%">
  54.  <div align="center"><span class="style2">Autor</span>
  55.  <span class="style2">
  56.  <input name="autor" type="text" autocomplete="on" value="" size="38" />
  57.  </span></input>
  58.  </div></td></tr>
  59. <tr>
  60.  <td width="1%"><div align="center"></div></td>
  61.  <td width="99%"> 
  62.  
  63.  <div align="center">
  64.  <span class="style2">
  65.  Treść</span>
  66. <textarea name="tresc" cols="20" style="width: 252; height: 70;" autocomplete="off"></textarea>
  67.  
  68. </div></td>
  69. </tr>
  70. <tr>
  71. <td > </td>
  72.  <td>
  73.  
  74.  <div align="center">
  75.  <input type="submit" value="Dodaj" />
  76.  </div></td></tr>
  77. </table>
  78.  
  79. <div align="center"><span class="style3">Komentarze sa własnoscia ich  autorów. <br />
  80. Autor strony nie ponosi odpowiedzialności za ich tresć!</span>
  81. </div>
  82. </form>
  83. <table class="all" border="0" width="100%">
  84.  <tr>
  85. <td><?php include "wiadomosc.php"; ?></td>
  86.  </tr>
  87. </table>
  88. <meta http-equiv="Pragma" content="no-cache" />
  89. <div align="center"></div>

I wszystko gra tylko że jak zapisze wiadomość z emotką to nie wyświetla emotki dlaczego?
darkowski
A może trzeba jakieś chmody ustawić? Czy źle gadam?
darkowski
A może tutaj coś trzeba jeszcze dodać żeby wyświetlał

wiadomosc.php
  1. <style type="text/css">
  2. <!--
  3. <meta http-equiv="Pragma" content="no-cache" />
  4. body {
  5. background-color: #000000;
  6. }
  7. body,td,th {
  8. color: #FFFFFF;
  9. }
  10. -->
  11. </style><?php
  12.  
  13.  $linia=explode("\n",file_get_contents("dane.php")); // kolejne linie sa zapisywane jako kolejne elementy tablicy "linia"
  14.  
  15.  $ilosc=count($linia); // ilosc linii/newsów
  16.  
  17.  for($c=$ilosc-2;$c>=3;$c--)
  18.  {
  19.  $element=explode("|",$linia[$c]); // kolejne czesci linii sa rozdzielane jako elementy tablicy "element"
  20.  echo '<table><tr><tr><tr><tr><tr><td><span style="color: #FF0000">'.$element[2].'</span></td></tr>';
  21.  echo '<tr><td><span style="color: #FF0000">Napisal: <b></span>' .$element[0].'</b></td></tr></table>';
  22.  echo '<TR><TD>   '.stripslashes($element[1]).'</TD></TR>';
  23.  }
  24.  
  25. ?>


jak chcecie sprawdzić o co mi dokładnie chodzi to wejdźcie na www.niedojeby.hostit.pl i dajcie na pogaduchy bo tam chciałbym żeby to działało
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.