logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak poprawić funkcję PHP do wyświetlania emotikon w HTML?

Roni20 06 Sie 2008 13:26 5966 28
REKLAMA
  • #1 5413563
    Roni20
    Poziom 10  
    Posty: 24
    Już 3 dzień nad tym siedze i nie wiem. Mam taką funkcję, która zamienia mi wpisane znaczki:

    <?php
    function smilies($string)
     {
    
      $string = str_replace(":)", "<img src=\"gfx/emoty/smile.gif\" alt=\":)\"  />", $string);
      $string = str_replace(":(", "<img src=\"gfx/emoty/sad.gif\" alt=\":(\"  />", $string);
      $string = str_replace(";)", "<img src=\"gfx/emoty/wink.gif\" alt=\";)\" />", $string);
      $string = str_replace(":D", "<img src=\"gfx/emoty/grin.gif\" alt=\":D\" />", $string);
      $string = str_replace(":p", "<img src=\"gfx/emoty/pfft.gif\" alt=\":p\" />", $string);
      $string = str_replace(":|", "<img src=\"gfx/emoty/frown.gif\" alt=\":|\" />", $string);
      $string = str_replace(":o", "<img src=\"gfx/emoty/shock.gif\" alt=\":o\" />", $string);
      $string = str_replace(":c", "<img src=\"gfx/emoty/cool.gif\" alt=\":c\"  />", $string);
      $string = str_replace(":@", "<img src=\"gfx/emoty/angry.gif\" alt=\":@\" />", $string);
    
      return $string;
     }
    ?>

    i czaje o co tu biega. Tą funkcje mam w pliku emotikony.php
    W źródle strony na której chcę by te emotki były mam:
    <?php
    include("emotikony.php");
    ?>

    ale dalej co zrobić to nie mam pojęcia zielonego. Przeglądałem różne kody w necie, ale niestety żaden nie był pełny. Jeszcze ja bym chciał by było tak, że jak myszką nacisne na emotce to żeby ona mi do pola textarea się zapisywała. Wiem, że coś z poleceniem onclick trzeba, ale nie wiem jak to zrobić. Dla mnie to jest kosmos, dla kogoś może to 5 minut roboty?

    Albo jeszcze jedna funkcja:
    <?php
    function emotki($zrodlo)
    {
    $emot = array
    (
    array(':mellow:','mellow.gif'),
    array('?','pytanie.gif'),
    array('!','wykrzyknik.gif'),
    array(':P','jezyk.gif'),
    array(':D','zeby.gif')
    );
    for($i=0;$i<count($emot);$i++)
    {
    $zrodlo=str_replace($emot[$i][0],'<img src="emotki/'.$emot[$i][1].'" alt="'.$emot[$i][0].'">',$zrodlo);
    }
    return($zrodlo);
    }
    ?>

    która zamienia nam znaki na emotki o efekcie takim samym jak pierwsza. Tyle że wszystko się sprowadza do problemu jak komputerowi powiedzieć, aby gdy kliknę myszką na emotkę to dodał mi ją do pola textarea. Podejrzewam, że to pewnie z jakieś 10 linijek kodu. Napisałby ktoś?
  • REKLAMA
  • #2 5413614
    mietekn
    Poziom 35  
    Posty: 1983
    Pomógł: 400
    Ocena: 161
    Zacznij lekturę od poczytania tego.
  • Pomocny post
    #3 5413618
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    Wawa - rozdzielaj problemy, bo w końcu ja nie wiem, o co chodzi... Pierwsza funkcja pozwala na podmianę zapisów na inne - możesz jej użyć np. w momencie odebrania od użytkownika przez skrypt ciągu tekstu ale przed zapisem do pliku (modyfikujesz=podmienisz, zapisujesz).

    A drugie pytanie to ja już nie wiem - chcesz obrazek mieć w textarea? Bo dodanie tekstu to wystarczy trochę googla - http://www.google.pl/search?hl=pl&q=textarea+wstawienie+javascript&btnG=Szukaj+w+Google&lr=
  • Pomocny post
    #4 5413728
    Dr.Vee
    VIP Zasłużony dla elektroda
    Posty: 1784
    Pomógł: 307
    Ocena: 76
    Witam,

    Proste pytanie - czy wysyłając post nie wpadłeś na to, żeby podejrzeć, jak to jest zrobione w formularzu elektrody :?:

    Cytuję:
    
    function emoticon(text) {
    	var txtarea = document.post.message;
    	text = '' + text + '';
    	if (txtarea.createTextRange && txtarea.caretPos) {
    		var caretPos = txtarea.caretPos;
    		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text;
    		txtarea.focus();
    	} else {
    		txtarea.value  += text;
    		txtarea.focus();
    	}
    }


    Dla wyjaśnienia jeszcze dodam, że jest to kod javascript do umieszczenia w znacznikach <script>, a nie kod PHP... eh.

    Pozdrawiam,
    Dr.Vee
  • #5 5413739
    Roni20
    Poziom 10  
    Posty: 24
    Widzę, że kolega dał mi kod z funkcją emoticon, no i nie działa mimo, że wydaje się że kod jest dobrze. To chyba jednak coś w ustawieniach Edhtmla mam źle a nie że kod jest źle. Bo to poniżej też nie działa. Nie umieszcza się emotka po naciśnięciu na nią w textarea tak samo jak w tej funkcji emoticon. Plik poniższy mam zapisany jako dodaj.php.
    <script language="JavaScript" type="text/javascript">
    <!--
    function emotka(text) {
            var text_value = document.getElementById('text').value;
    
            if(text == 'text_value')
            {
               document.post.tresc.value += text_value;
               document.post.tresc.focus();
            } else {
               text = ' ' + text + ' ';
               document.post.tresc.value += text;
               document.post.tresc.focus();
            }
    }
    
    //-->
    </script>
    <form action="wpisuj.php" method="post" name="post">
    
    
    nick:
    
    <br>
    <input class="inp1" name="nick"><br>
    
    
    adres mail:
    
    <br>
    <input class="inp1" name="mail">
    <br>
    
    
    numer gg:
    
    <br>
    <input class="inp1" name="gg">
    <br>
    
    
    www (bez http://):
    
    <br>
    <input class="inp1" name="www">
    <br>
    
    
    
    tresc:
    
    <br>
    <textarea  class="inp2" name="tresc" rows="5" cols="30"></textarea>
    <br \>
    Emotki <table cellspacing="0" >
    <tr>
    <td>
    <img onclick="emotka(' ;p ')" border=0 src="emotki/0.gif" alt=";P" /> </td>
    <td><a href="javascript:emotka(' :* ')" > <img border=0 src="emotki/1.gif" alt=":*" /> </td></tr></table>
    
    <br />
    <input type="submit" value="Dodaj" name="Submit_button">
    <input type="reset" value="Wymaż" name="B2">
    </form>


    Ani ten sposób:
    <img onclick="emotka(' ;p ')" border=0 src="emotki/0.gif" alt=";P" />

    ani ten:
    <a href="javascript:emotka(' :* ')" > <img border=0 src="emotki/1.gif" alt=":*" />


    Podejrzewam, że ma to związek z polem name w form. Dałem name=post. Albo coś w ustawieniach htmla. Bo jak klikam na te emotki na stronie to na dole w pasku pisze błąd na stronie. Dziadostwo. Pewnie z miesiąc czasu będę na milionach forów pytał czemu to nie działa jak jest dobrze.
    A to jest program z funkcją emoticon:
    <script language="JavaScript" type="text/javascript"> 
    <!-- 
    function emoticon(text) { 
       var txtarea = document.post.message; 
       text = '' + text + ''; 
       if (txtarea.createTextRange && txtarea.caretPos) { 
          var caretPos = txtarea.caretPos; 
          caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? caretPos.text + text + ' ' : caretPos.text + text; 
          txtarea.focus(); 
       } else { 
          txtarea.value  += text; 
          txtarea.focus(); 
       } 
    }
    //--> 
    </script> 
    <form action="wpisuj.php" method="post" name="post"> 
    
    
    nick: 
    
    <br> 
    <input class="inp1" name="nick"><br> 
    
    
    adres mail: 
    
    <br> 
    <input class="inp1" name="mail"> 
    <br> 
    
    
    numer gg: 
    
    <br> 
    <input class="inp1" name="gg"> 
    <br> 
    
    
    www (bez http://): 
    
    <br> 
    <input class="inp1" name="www"> 
    <br> 
    
    
    
    tresc: 
    
    <br> 
    <textarea  class="inp2" name="tresc" rows="5" cols="30"></textarea> 
    <br \> 
    Emotki <table cellspacing="0" > 
    <tr> 
    <td> 
    <img onclick="emoticon(' ;p ')" border=0 src="emotki/0.gif" alt=";P" /> </td> 
    <td><a href="javascript:emoticon(' :* ')" > <img border=0 src="emotki/1.gif" alt=":*" /> </td></tr></table> 
    
    <br /> 
    <input type="submit" value="Dodaj" name="Submit_button"> 
    <input type="reset" value="Wymaż" name="B2"> 
    </form>
  • REKLAMA
  • #7 5413845
    Roni20
    Poziom 10  
    Posty: 24
    a jak to dziadostwo podejrzeć?
  • Pomocny post
    #8 5413866
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    IE:
    W opcjach internetowych zaznacz opcje pozwalające na debugowanie skryptów (w starszych było to chyba [x]Włącz debugowanie, w nowszym [ ] Wyłacz debugowanie skryptów).

    FF:
    Narzędzia - konsola błędów

    I nic tu dziadostwem ani hardcorowe ani nic z tych rzeczy nie jest... To podstawy dzisiejszego Internetu. Braknie Ci chyba słów przy połączeniu np PHP+SQL+XHTML/CSS+Ajax/JSON+DOM...
  • REKLAMA
  • Pomocny post
    #9 5413896
    tom_85
    Poziom 14  
    Posty: 96
    Pomógł: 8
    Ocena: 5
    Roni20 napisał:
    Podejrzewam, że ma to związek z polem name w form. Dałem name=post.


    pole name określa tylko nazwę formularza... a słowo POST jest stosowane do przesyłania zawartości formularza przez protokół HTTP. Słówko POST jest to właściwość atrybutu METHOD czyli poprawnie by było np.
    <form method="POST" action="plik_przetwazajacy_formularz.php">formularz</form>
    Oczywiście nic nie stoi na przeszkodzie żeby nadać formularzowi nazwę POST ale co do problemu który chcesz rozwiązać to wartość nadana NAME nie ma najmniejszego znaczenia. (chyba że w kodzie javascript byś wykorzystywał tą nazwę np do znalezienia formularza na stronie, ale nie widzę żeby tak było w tym przypadku). Jeśli nadajesz jakieś wartości atrybutom to pisz je w cudzysłowach - tego wymagają standardy czyli jak już coś to:.

    Roni20 napisał:
    Albo coś w ustawieniach htmla. Bo jak klikam na te emotki na stronie to na dole w pasku pisze błąd na stronie. Dziadostwo.


    html nie ma żadnych ustawień... chodzi ci o przeglądarkę ? edytor ? Jeśli testujesz skrypty javascript to nie ma zbyt dużo ustawień z tym związanych, najczęściej polega to tylko na włączeniu/wyłączeniu JS. Tym bardziej standardowo obsługa JS jest włączona więc jeśli nic nie zmieniałeś to jeśli byś wiedział o co w tym kodzie chodzi to by na pewno działało. Jeśli działa ci kod
    <html><head><script type="text/javascript">alert("działa");</script></head><body></body></html>
    który można umieścić w pliku .html to obsługę javascript masz włączoną i na 99% problemem jest w kodzie którym się posługujesz.

    Roni20 napisał:
    Pewnie z miesiąc czasu będę na milionach forów pytał czemu to nie działa jak jest dobrze.
    heh albo i dłużej.... bo i tak ci nie zadziała. Nie prościej siąść i pouczyć się trochę ?? Nauczenie się samego podstaw naprawdę nie zajmuje dużo czasu.

    Nauczenie się HTML - kilka godzin (góra jeden dzień)
    nauczenie się CSS - też kilka godzin
    oba wymienione elementy są podstawą KAŻDEJ strony internetowej, a po tym co piszesz wynika że ewidentnie nie znasz nawet tych najprostszych podstaw. Więc mniej czasu zajęło by ci przerobienie jednego z kursów html/css których na necie są miliony a nie zadawanie pytań na jednym forum potem kopiowanie otrzymanego kodu od użytkownika X na drugie forum do użytkownika Y który inaczej rozwiązałby pewne problemy... a przez to zmienia trochę kod ale ponieważ nie wiesz co się w nim dzieje to znowu pokazujesz to użytkownikowi X... do niczego to nie prowadzi....
  • #10 5413956
    Roni20
    Poziom 10  
    Posty: 24
    Tzn. ja na stronę co zmodyfikuję jakiś plik to zaraz przenoszę poprzez filezillę i tak sprawdzam czy działa kod czy nie działa. Włączyłem to debugowanie w opcjach internetowych i teraz jak sprawdzić gdzie jest błąd?

    Ale napotkałem niesłychany problem, bo nikt nie wie czemu to nie działa jak jest dobrze kod :) Nawet najtęższe głowy nie wiedzą.
    <script language="JavaScript" type="text/javascript">
    <!--
    function emoticon(text) {
        text = ' ' + text + ' ';
        if (document.post.message.createTextRange && document.post.message.caretPos) {
            var caretPos = document.post.message.caretPos;
            caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
            document.post.message.focus();
        } else {
        document.post.message.value  += text;
        document.post.message.focus();
        }
    }
    
    //-->
    </script>
    <form action="wpisuj.php" method="post">
    
    
    nick:
    
    <br>
    <input class="inp1" name="nick"><br>
    
    
    adres mail:
    
    <br>
    <input class="inp1" name="mail">
    <br>
    
    
    numer gg:
    
    <br>
    <input class="inp1" name="gg">
    <br>
    
    
    www (bez http://):
    
    <br>
    <input class="inp1" name="www">
    <br>
    
    
    
    tresc:
    
    <br>
    <textarea  class="inp2" name="tresc" rows="5" cols="30"></textarea>
    <br \>
    Emotki <table cellspacing="0"><tr><td><a href="javascript:emoticon(' :* ')"><img border=0 src="emotki/1.gif" alt=":*" /> </a></td><td></table>
    <br />
    <input type="submit" value="Dodaj" name="Submit_button">
    <input type="reset" value="Wymaż" name="B2">
    </form>
  • #11 5414116
    tom_85
    Poziom 14  
    Posty: 96
    Pomógł: 8
    Ocena: 5
    Roni20 napisał:
    ...Nawet najtęższe głowy nie wiedzą...

    Widocznie na złym forum pytałeś :D :D :D

    ... zaraz zobaczę ten twój kod :D
  • REKLAMA
  • #12 5414155
    Roni20
    Poziom 10  
    Posty: 24
    DZIAŁA!!!
    
    <script language="JavaScript" type="text/javascript">
    <!--
    function emoticon(text) {
        text = ' ' + text + ' ';
        if (document.post.tresc.createTextRange && document.post.tresc.caretPos) {
            var caretPos = document.post.message.caretPos;
            caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
            document.post.tresc.focus();
        } else {
        document.post.tresc.value  += text;
        document.post.tresc.focus();
        }
    }
    
    //-->
    </script>
    <form action="wpisuj.php" method="post" name="post">
    
    
    nick:
    
    <br>
    <input class="inp1" name="nick"><br>
    
    
    adres mail:
    
    <br>
    <input class="inp1" name="mail">
    <br>
    
    
    numer gg:
    
    <br>
    <input class="inp1" name="gg">
    <br>
    
    
    www (bez http://):
    
    <br>
    <input class="inp1" name="www">
    <br>
    
    
    
    tresc:
    
    <br>
    <textarea  class="inp2" name="tresc" rows="5" cols="30"></textarea>
    <br \>
    Emotki <table cellspacing="0"><tr><td><a href="javascript:emoticon(' :* ')"><img border=0 src="emotki/1.gif" alt=":*" /> </a></td><td></table>
    <br />
    <input type="submit" value="Dodaj" name="Submit_button">
    <input type="reset" value="Wymaż" name="B2">
    </form>
    

    Jednak to name przy form było ważne.
    document.post.tresc gdzie post to nazwa formy a tresc to nazwa textarea.
    Niemniej jednak i tak nie do końca działa, bo jak nacisne na emotke to dodaje się ona do textarea, ale jak dam komentarz to potem w dodanym komentarzu nie ma emotki tylko jest jej znak :( I co teraz zrobić?
  • #14 5414225
    Roni20
    Poziom 10  
    Posty: 24
    No właśnie jak wstawie w skrypcie odbierającym czyli w księga.php kod:
    <?php
    function smilies($string)
     {
    
      $string = str_replace(":*", "<img src=\"emotki\1.gif\" alt=\":*\"  />", $string);
      return $string;
     }
    ?>

    To mi na stronie się nie wyświetlają pola do dodawania komentarzy. Tylko wpisy są.
    Jak poprawić funkcję PHP do wyświetlania emotikon w HTML?
    To część skryptu odbierającego:
    
    <td valign="top" align=center> <!--intro-->
                <table width="620" bgcolor=white border="0" cellpadding="10" cellspacing="0">
                   <tr>
                      <td width=638>
                      <font color="black">
                      <? function zamiana($buffer) {
    $co = array("Ą", "ą", "Ś", "ś", "Ź", "ź");
    $naco = array("Ą", "ą", "Ś", "ś", "Ź", "ź");
    return (str_replace($co, $naco, $buffer));
    }
    ob_start("zamiana");
    ?>
    <?php
    function smilies($string)
     {
    
      $string = str_replace(":*", "<img src=\"emotki\1.gif\" alt=\":*\"  />", $string);
      return $string;
     }
    ?>
    <p class="zobacz">
    
    <b><center>Ilość wpisów: <? include "inw.txt" ?></center></b>
    <br><br>
    <center>
    <?
    
    include "wpisy.txt"
    
    ?>
    </center>
    <center>
    <br /><br />
    <?
    include "dodaj.php"
    ?>
    </center>
    
    
    
    </p>
    
    
    
    
    <? ob_end_flush(); ?>
    
                      </font>
                      </td>
                   </tr>
                </table>
                </td> <!--koniec intro-->
  • Pomocny post
    #15 5414247
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    Wawa - ja tu nie widzę miejsca, gdzie by ze zmiennej $_POST trafiało do skryptu i było zapisywane do pliku... I wyjasnij mi sens funkcji zamiana.

    BTW - to jest HTML czy XHTML bo masz wymieszane oba standardy w tym kodzie podanym.
  • #16 5414298
    Roni20
    Poziom 10  
    Posty: 24
    O nie, to widzę, że skończył się jeden problem to zaczął drugi :(:(:( Wszystko działa dobrze jak nie ma tego fragmentu:
    
    <?php
    function smilies($string)
     {
    
      $string = str_replace(":*", "<img src="emotki\1.gif" alt=":*"  >", $string);
      return $string;
     }
    ?>

    Jak ten fragment umieszczam w skrypcie odbierającym to wówczas znika mi pole textarea, pole gdzie nick się wpisuje itd. Widać tylko komentarze i napis liczba wpisów. Funckaj zamiana nie wiem jak działa. Chodzi o to, że skrypt działa i jak do niego dodać funckję smile???
  • Pomocny post
    #17 5414308
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    ale ten kod, co dodajesz sam w sobie NA NIC nie ma wpływu.

    Upewnij się tylko, że serwer dopuszcza stosowanie znacznika <?php (jest to w zasadzie właściwy zapis, skrócony <? nie jest zalecany).
  • #18 5414363
    Roni20
    Poziom 10  
    Posty: 24
    Bez znacznika <?php czy ze znacznikiem <? jest taki sam efekt. Znika to co jest zapisane za tym kodem. To są po prostu jaja nie z tej ziemi. Dopiero jak to dam:
    <?
    function smilies($string) 
     { 
    
      $string = str_replace(":*", "<img src="emotki\1.gif" alt=":*" >", $string); 
      return $string; 
     } 
    ?> 
    na samym końcu za include dodaj.php to strona się cała wyświetla, no ale nie ma w księdze gości tych mordek mimo że do textarea dodają się ich kody (w księdze gości są mordki w postaci tekstowej). Może funkcja jest zła i tyle. To napisałby mi ktoś funkcje co by zastąpiła znaczek ":*" mordką? Bo ja umiem napisać, ale jak ja napisze to nie działa, bo mnie komputer nie lubi. Ja mam takiego pecha, nawet jak dostaje od kogoś gotowce to koledze działa a mi nie.

    Nie no tego nie da się zrobić, bo niby jak powiedzieć komputerowi że jak napotka w pliku wpisy.txt pewne znaczki to żeby je zamienił z plikiem .jpg Pewnie już do pliku trzeba by zapisywać te obrazki w formie <img ... > Jezus jakie to trudne. A może ktoś się orientuje ile to linijek kodu by zajęło ze 100 z 500 by coś takiego zrobić?
  • #20 5414522
    Roni20
    Poziom 10  
    Posty: 24
    Nie to nie pomogło a nawet spowodowało że strona się w ogóle nie wyświetlała. Ale ta funkcja nie będzie potrzebna, bo wiem już gdzie trzeba dodać komende która by zamieniała nam pewne znaki na obrazek. Otóż już do pliku tekstowego trzeba żeby się wpisywało <img ...> To początek pliku wpisuj.php:
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
    <link rel="stylesheet" href="style.css" type="text/css">
    <title>Księga Gości - dodawanie wpisu</title>
    </head>
    <body bgcolor="#EEEEEE">
    
    
    <? function zamiana($buffer) { 
    $co = array("Ą", "ą", "Ś", "ś", "Ź", "ź");
    $naco = array("ˇ", "&plusmn;", "&brvbar;", "s", "", "Ľ");
    return (str_replace($co, $naco, $buffer));
    } 
    ob_start("zamiana"); 
    ?>
    
    
    <?
    $nick =$_POST['nick'];
    $www =$_POST['www'];
    $mail =$_POST['mail'];
    $gg =$_POST['gg'];
    $text =$_POST['tresc'];
    
    
    
    
    
    $a='<';
    $text=str_replace($a,"&lt;",$text);
    
    $a=chr(34);
    $text=str_replace($a,"&quot;",$text);
    
    $a=chr(92);
    $text=str_replace($a,"",$text);


    Ostatnie 6 linijek powoduje, że w polu textarea zamienia nam znaki na inne znaki. Tak mi się wydaje. Niestety jak dodam do tego komende:
    $a=':*';
    $text=str_replace($a,"<img src="emotki\1.gif" alt=":*">",$text);

    To coś sie psuje na stronie, nie da rady dać wpisu.

    Albo może przy przenoszeniu z pola textarea do wpis.txt w tym fragmencie trzeba by jakoś coś dać żeby zamieniało nam określone znaczki na postać <img ...>
    
    $myFile = fopen ('wpisy.txt',a);
    if ($text=="")
    	{
    
    echo"<br><br><p class=\"text\">Nie podałeś treści wpisu!
    <br><a href=\"ksiega.php\">Powrót</a></p>";	
    
    	}
    
    else	{
    
    
    
    fputs($myFile,"<table border=\"0\" width=\"600\"><tr><td class=\"td1\" valign=\"top\">");
  • Pomocny post
    #21 5414554
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    Chyba wszystkich nie zmieniłeś? W ścieżce dostępu miałeś zmienić, bo nie stosuje się Windosowskich zapisów, to po pierwsze. A po drugie zapis \1 oznacza znak o kodzie 1! Jeśli chce się wywołąć znak \, to należy użyć kodu \\ jeśli tekst objęty jest w cudzysłowia (") a nie w apostrofy (')
  • #22 5414637
    Roni20
    Poziom 10  
    Posty: 24
    Tylko w ścieżce dostępu zmieniłem. Dobra nieważne, bo widzę, że nikt tu nie czyta co piszę. Można skasować temat.
  • #23 5414679
    Roni20
    Poziom 10  
    Posty: 24
    Mam następujące dane:

    $myFile = fopen ('wpisy.txt',a); /*to plik do którego są zapisywane dane z pola textarea*/
    $text =$_POST['tresc']; /* tu jest to co jest napisane w polu textarea (nazywa się on tresc)*/
    
    fputs($myFile,"$text"); /*zapis do pliku wpisy.txt tego co jest w zmiennej $text


    Pytanie:
    Co należy dodać by do pliku wpisy.txt zapisało mi się zamiast znaczka ':)' to to: <img border=0 src="emotki/1.gif" alt=":)"> oraz zamiast znaczka ':*' to <img border=0 src="emotki/2.gif>??? Czy mógłby ktoś stworzyć kod co przegląda dane zawarte w zmiennej $text i zamienia ':)' oraz ':*' ??? Bo sam nie potrafię wymyślić jak to zrobić. Z góry dziękuję.

    Moderowany przez krzychoocpp:

    Tematy połączyłem

  • Pomocny post
    #24 5414844
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    
    function smiles($s)
     {
          $z_a=array(':)',':*');
          $na_a=array('<img border=0 src="emotki/1.gif" alt="Smile">','<img border=0 src="emotki/2.gif" alt=":*">');
      return str_replace($z_a,$na_a, $s);
    
    } 
    
    $myFile = fopen ('wpisy.txt','a'); /*to plik do którego są zapisywane dane z pola textarea*/
    $text =$_POST['tresc']; /* tu jest to co jest napisane w polu textarea (nazywa się on tresc)*/
    
    fputs($myFile,smiles($text)); /*zapis do pliku wpisy.txt tego co jest w zmiennej $text
    
    fclose($myFile);
    


    Sposób wyrażania się Twojego wcale nie ułatwia pomocy - piszesz chaotycznie i jednocześnie o wszystkim. Ponadto poziom wiedzy sprawia, że masz trudności z opisaniem tego, co się aktualnie dzieje.
  • #25 5416969
    Roni20
    Poziom 10  
    Posty: 24
    Niestety nie działa ta formuła. Do księgi gości zapisuje się:
    smiles(i w nawiasie to co jest w polu textarea)
    Dodam tylko, że w cudzysłowiu jest zamieszczone "smiles($text)" bo takto to w ogóle coś sie knoci:
    fputs($myFile,"smiles($text)")

    Funkcje oczywiście zamieściłem w <? ?>. Widze, że kolejne 8 godzin walki z tym dziadostwem bedzie, jezus.
  • Pomocny post
    #26 5417072
    Dżyszla
    Poziom 42  
    Posty: 7077
    Pomógł: 1095
    Ocena: 226
    Jak to "coś się knoci"? Konkrety! Jakieś komunikaty o błędach są?
    Zamieszczając w cudzysłowie zupełnie zmienia się sens wyrażenia przekształcając funkcję w zwykły tekst. Czy do samochodu próbujesz zaprzęgać konia tylko dlatego, że nie przekręciłeś kluczyka w stacyjce? Przecież wiadomo, że to nie jest samochód wtedy tylko furmanka.
  • #27 5417139
    Roni20
    Poziom 10  
    Posty: 24
    Jednak masz rację, nie knoci się bez cudzysłowia. Knoci się dopiero jak dodam jeszcze jakiś tekst. Gdzie tu jest błąd?
    fputs($myFile,smiles($text),"<br><br>------------<br>dodano: $data</td></tr></table>");

    Próbowałem też jak logika wskazuje rozbić na 2 raty, ale też się knoci:
    fputs($myFile,smiles($text);
    fputs($myFile,"<br><br>------------<br>dodano: $data</td></tr></table>");
  • #29 5417343
    Roni20
    Poziom 10  
    Posty: 24
    Ok działa, rzeczywiście kropka musiała być a nie przecinek. Działa. To chyba księge gości po 3 ciężkich dniach walki mam.:) Teraz potestuje czy wszystko aby na pewno jest ok.:)

Podsumowanie tematu

✨ Dyskusja dotyczy problemów z implementacją funkcji PHP zamieniającej tekstowe emotikony na obrazy HTML w aplikacji księgi gości. Autor posiada funkcję smilies() wykorzystującą str_replace do podmiany znaków takich jak ":)", ":*" na odpowiednie znaczniki <img>, jednak po dodaniu tej funkcji do skryptu odbierającego dane (np. księga.php) znikają pola formularza, co wskazuje na błędy w integracji. Wskazano, że w ścieżkach do obrazków należy stosować ukośniki "/" zamiast backslashy "" oraz że w PHP do konkatenacji ciągów używa się operatora kropki ".", a nie przecinka. Zaproponowano prostą funkcję zamieniającą emotikony na znaczniki obrazów przed zapisem do pliku tekstowego, np. fputs($myFile, smiles($text)); z poprawnym wywołaniem bez cudzysłowów. Poruszono także kwestie debugowania JavaScript w przeglądarkach (IE, Firefox) w celu diagnozy problemów z wstawianiem emotikon do textarea. Ostatecznie autor potwierdził działanie funkcji po poprawnym zastosowaniu operatora konkatenacji i umieszczeniu funkcji na końcu skryptu. Dyskusja obejmuje także różnice między HTML a XHTML oraz poprawne użycie znaczników PHP.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA