Toon posts:

[PHP] Smilie functie.

Pagina: 1
Acties:
  • 183 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb in een gastenboek wat zitten knoeien met de smilies (extra toevoegen).. Maar nu heb ik dus het probleem dat de smilies niet meer worden weergegeven in de posts...
Ik heb momenteel deze code voor de smilies:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
function set_smilies ($text) {
  $text = str_replace(":)","<img src=\"smilies/1650.gif\" >",$text);
  $text = str_replace("|:(","<img src=\"smilies/1655.gif\" >",$text);
  $text = str_replace(":7","<img src=\"smilies/1660.gif\" >",$text);
  $text = str_replace(":O","<img src=\"smilies/1665.gif\" >",$text);
  $text = str_replace(":'(","<img src=\"smilies/1670.gif\" >",$text);
  $text = str_replace(":D","<img src=\"smilies/1675.gif\" >",$text);
  $text = str_replace(":-D","<img src=\"smilies/1675.gif\" >",$text);
  $text = str_replace(":*","<img src=\"smilies/1680.gif\" >",$text);
  $text = str_replace(";)","<img src=\"smilies/1685.gif\" >",$text);
  $text = str_replace(";-)","<img src=\"smilies/1685.gif\" >",$text);
  $text = str_replace(":p","<img src=\"smilies/1690.gif\" >",$text);
  $text = str_replace(":P","<img src=\"smilies/1690.gif\" >",$text);
  $text = str_replace(":-p","<img src=\"smilies/1690.gif\" >",$text);
  $text = str_replace(":-P","<img src=\"smilies/1690.gif\" >",$text);
  $text = str_replace(":(","<img src=\"smilies/1695.gif\" >",$text);
  $text = str_replace(":-(","<img src=\"smilies/1695.gif\" >",$text);
  $text = str_replace("7(8)7","<img src=\"smilies/1700.gif\" >",$text);
  $text = str_replace("(L)","<img src=\"smilies/1705.gif\" >",$text);
  $text = str_replace("(l)","<img src=\"smilies/1705.gif\" >",$text);
  $text = str_replace("(I)","<img src=\"smilies/1710.gif\" >",$text);
  $text = str_replace("(i)","<img src=\"smilies/1710.gif\" >",$text);
  $text = str_replace("(K)","<img src=\"smilies/1715.gif\" >",$text);
  $text = str_replace("(k)","<img src=\"smilies/1715.gif\" >",$text);
  $text = nl2br($text);
}

function show_ubb () {
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+=':-)';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1650.gif\" border=0 ></a> ";
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+='|:(';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1655.gif\" border=0 ></a> ";
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+=':7';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1660.gif\" border=0 ></a> ";
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+=':O';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1665.gif\" border=0 ></a> ";
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+=':'(';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1670.gif\" border=0 ></a> ";
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+=':D';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1675.gif\" border=0 ></a> ";
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+=':*';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1680.gif\" border=0 ></a> ";
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+=';)';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1685.gif\" border=0 ></a> ";
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+=':p';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1690.gif\" border=0 ></a> ";
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+=':(';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1695.gif\" border=0 ></a> ";
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+='7(8)7';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1700.gif\" border=0 ></a> ";
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+='(L)';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1705.gif\" border=0 ></a> ";
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+='(I)';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1710.gif\" border=0 ></a> ";
  echo "<A class=nodec href=# onClick=document.gastenboek.bericht.value+='(K)';document.gastenboek.bericht.focus();return false;/><img src=\"smilies/1715.gif\" border=0 ></a> ";
}
?>

De smilie pagina word geinclude bij de pagina waar ze moeten weergegeven worden.
Ze worden opgeroepen met set_smilies($bericht); in het bericht gezet de variabel $bericht is tevens de variabel die de berichten oproept..
Dit probleem had ik al voor dat ik de functie nl2br() toevoegde. Nou werkt de functie nl2br via deze code:
code:
1
$bericht = nl2br($data['bericht']);

Moet ik dan van de set_smilies() functie set_smilies($data['bericht']) moeten maken? Of gewoon de variabel $bericht er in houden?

Ik heb al verschillende dingen geprobeerd (zoals de variabel $text ook in variabel $bericht te veranderen) maar het werkte allemaal niet..
Iemand enig idee hoe ik dit kan oplossen.. Ik ben nog niet zo heel lang bezig met php dus niet te ingewikkelde uitleg AUB.
Iniedergeval heel erg bedankt voor jullie reacties :)

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 11:05

--MeAngry--

aka Qonstrukt

Je vergeet 'return'. ;)

Tesla Model Y RWD (2024)


Verwijderd

Topicstarter
Sorry, maar waar moet hij komen te staan?

  • Niles
  • Registratie: Januari 2003
  • Laatst online: 27-01-2024
Verwijderd schreef op woensdag 28 februari 2007 @ 18:04:
Sorry, maar waar moet hij komen te staan?
...
$text = nl2br($text);
return $text;
}

  • Room42
  • Registratie: September 2001
  • Niet online
De "return $text;" dient net onder "$text = nl2br($text);" komen te staan.

Maar we zijn je personal helpdesk niet, hoor

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Verwijderd

Topicstarter
Oh ja, sorry maar ik ben toch iets meer van de electronica (http://www.circuitsonline.net/)...
Wat zal ik zeggen, het werkt niet..

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 14:45

pietje63

RTFM

Verwijderd schreef op woensdag 28 februari 2007 @ 18:12:
Oh ja, sorry maar ik ben toch iets meer van de electronica (http://www.circuitsonline.net/)...
Wat zal ik zeggen, het werkt niet..
Elektronica hebben wij ook :+ ...


Of return of echo.. anders heb je alleen een variabele binnen je functie.

Welk van de twee het is ligt er aan hoe je de functie oproept, maar dat kunnen wij nu niet ruiken.

[ Voor 56% gewijzigd door pietje63 op 28-02-2007 18:15 ]

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


  • Room42
  • Registratie: September 2001
  • Niet online
Waarom werkt het niet dan?
Heb je dit geprobeerd?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function set_smilies ($text) {
  $text = str_replace(":)","<img src=\"smilies/1650.gif\" >",$text);
  $text = str_replace("|:(","<img src=\"smilies/1655.gif\" >",$text);
  $text = str_replace(":7","<img src=\"smilies/1660.gif\" >",$text);
  $text = str_replace(":O","<img src=\"smilies/1665.gif\" >",$text);
  $text = str_replace(":'(","<img src=\"smilies/1670.gif\" >",$text);
  $text = str_replace(":D","<img src=\"smilies/1675.gif\" >",$text);
  $text = str_replace(":-D","<img src=\"smilies/1675.gif\" >",$text);
  $text = str_replace(":*","<img src=\"smilies/1680.gif\" >",$text);
  $text = str_replace(";)","<img src=\"smilies/1685.gif\" >",$text);
  $text = str_replace(";-)","<img src=\"smilies/1685.gif\" >",$text);
  $text = str_replace(":p","<img src=\"smilies/1690.gif\" >",$text);
  $text = str_replace(":P","<img src=\"smilies/1690.gif\" >",$text);
  $text = str_replace(":-p","<img src=\"smilies/1690.gif\" >",$text);
  $text = str_replace(":-P","<img src=\"smilies/1690.gif\" >",$text);
  $text = str_replace(":(","<img src=\"smilies/1695.gif\" >",$text);
  $text = str_replace(":-(","<img src=\"smilies/1695.gif\" >",$text);
  $text = str_replace("7(8)7","<img src=\"smilies/1700.gif\" >",$text);
  $text = str_replace("(L)","<img src=\"smilies/1705.gif\" >",$text);
  $text = str_replace("(l)","<img src=\"smilies/1705.gif\" >",$text);
  $text = str_replace("(I)","<img src=\"smilies/1710.gif\" >",$text);
  $text = str_replace("(i)","<img src=\"smilies/1710.gif\" >",$text);
  $text = str_replace("(K)","<img src=\"smilies/1715.gif\" >",$text);
  $text = str_replace("(k)","<img src=\"smilies/1715.gif\" >",$text);
  $text = nl2br($text);


  /* Hier komt ie! */
  return $text;

}

"Technological advancements don't feel fun anymore because of the motivations behind so many of them." Bron


Verwijderd

Topicstarter
Haha, jah hoor ik heb de return functie gebruikt. Maar hij werkt niet..

Bij deze post ik dan maar even waar de smilies worden weergegeven en waar ze het niet doen.
code:
1
2
3
4
5
6
7
8
//DB connectie staat ergest anders.
while($data = mysql_fetch_array($query)){
set_smilies($bericht);
$bericht = nl2br($data['bericht']);
echo "<hr size=1 width=700><table  width=\"600px\"><tr><td width=150 valign=top><a href=mailto:".$data['email']."><b>".$data['naam']."</b></a><br>Datum: ".$data['datum']."<br>Tijd: ".$data['tijd']."<font size=1>";
    if ($data['homepage']=="" OR $data['homepage']=="http://") {} else {
    echo "<a href=\"".$data['homepage']."\" target=\"_blank\">website</a>"; }
echo"</font></td><td width=500 valign=top>".$bericht."</td></tr></table><hr size=1 width=700><br> ";}

Kijk, hier word hij in weergegeven, niet veel spectaculairs dus, maar het werkt niet..

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 11:05

--MeAngry--

aka Qonstrukt

Het enige wat je nu doet is de functie aanroepen en verder niets. Kijk hier eens: http://nl3.php.net/manual/en/language.functions.php

Tesla Model Y RWD (2024)


Verwijderd

Topicstarter
Maar je haalt set_smilies() toch over de variabel $bericht en de variabel $bericht word ge-echoed. Tevens is engels in eens heel moeilijk als je iets al moeilijk vind.. Sorry.

Of moet er ergenst een echo komen in de pagina van de smilies? Lijkt me opzich nog niet zo'n idioot idee van mij, maar ik laat aan de experds over of dat ook zo is en hoe..

  • Bartolomew85
  • Registratie: Augustus 2005
  • Laatst online: 05-07-2018
Ik neem aan dat je die return wel moet opvangen
PHP:
1
$bericht = set_smilies($bericht);

  • mithras
  • Registratie: Maart 2003
  • Niet online
Verwijderd schreef op woensdag 28 februari 2007 @ 18:51:
Maar je haalt set_smilies() toch over de variabel $bericht en de variabel $bericht word ge-echoed. Tevens is engels in eens heel moeilijk als je iets al moeilijk vind.. Sorry.

Of moet er ergenst een echo komen in de pagina van de smilies? Lijkt me opzich nog niet zo'n idioot idee van mij, maar ik laat aan de experds over of dat ook zo is en hoe..
Echo en return is heel iets anders. Wat jij wil is dat de functie niets echoot, maar retourneert. Lees eens wat over return en echo op http://php.net en dan begrijp je waar je fout zit ;)

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 09:20

krvabo

MATERIALISE!

ik gebruik zelf altijd deze maar:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function parse_smileys($source){
    $search = array(
        "/( |^):\)/",
        "/( |^):\(/",
        "/( |^);\)/",
        "/( |^)(:P|:p)/",
        "/( |^)(:o|:O)/",
        "/( |^):'\(/",
        "/( |^):\+/",
        "/( |^):D/",
        "/( |^):9~/",
        "/( |^):\//",
        "/( |^)(:X|:x)/",
        "/( |^):S/",
        "/( |^)(:w|:W)/");
    $replace = array(
        "\${1}<img src=\"/images/smileys/smile.gif\" alt=\"\" \\>",
        "\${1}<img src=\"/images/smileys/frown.gif\" alt=\"\" \\>",
        "\${1}<img src=\"/images/smileys/wink.gif\" alt=\"\" \\>",
        "\${1}<img src=\"/images/smileys/puh2.gif\" alt=\"\" \\>",
        "\${1}<img src=\"/images/smileys/redface.gif\" alt=\"\" \\>",
        "\${1}<img src=\"/images/smileys/cry.gif\" alt=\"\" \\>",
        "\${1}<img src=\"/images/smileys/clown.gif\" alt=\"\" \\>",
        "\${1}<img src=\"/images/smileys/biggrin.gif\" alt=\"\" \\>",
        "\${1}<img src=\"/images/smileys/kwijl.gif\" alt=\"\" \\>",
        "\${1}<img src=\"/images/smileys/nosmile.gif\" alt=\"\" \\>",
        "\${1}<img src=\"/images/smileys/shutup.gif\" alt=\"\" \\>",
        "\${1}<img src=\"/images/smileys/huh.gif\" alt=\"\" \\>",
        "\${1}<img src=\"/images/smileys/bye.gif\" alt=\"\" \\>");
    return preg_replace($search, $replace, $source);
}

Zo wordt voor een smiley geen spatie gezet als de smiley aan het begin van de regel staat. Verder wordt verplicht dat "haha :D" wel werkt en "haha:D" niet. :)

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Verwijderd

Topicstarter
Oké dus dat neem ik aan dat ik allen set_smilies() hoe te veranderen in parse_smileys()

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 09:20

krvabo

MATERIALISE!

Ehm, ja.. eigenlijk wel.

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


  • WormLord
  • Registratie: September 2003
  • Laatst online: 01-12 13:49

WormLord

Devver

Verwijderd schreef op woensdag 28 februari 2007 @ 20:40:
Oké dus dat neem ik aan dat ik allen set_smilies() hoe te veranderen in parse_smileys()
Nee, je moet leren wat een functie nou eigenlijk doet. Met name hoe een functie iets terug kan geven en hoe je dat dan moet opvangen.
mithras schreef op woensdag 28 februari 2007 @ 18:53:
[...]
Echo en return is heel iets anders. Wat jij wil is dat de functie niets echoot, maar retourneert. Lees eens wat over return en echo op http://php.net en dan begrijp je waar je fout zit ;)
Heb je deze links al eens bekeken? En snap je nu wat je fout doet?
Want alleen je functie veranderen zal niet helpen.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Verwijderd schreef op woensdag 28 februari 2007 @ 18:04:
Sorry, maar waar moet hij komen te staan?
Deze reactie vat het eigenlijk al samen: je hebt geen idee wat je aan het doen bent. Lees eens een goed boek door over de stof waar je je mee bezig houdt, of zoek een recente tutorial op. De algemene tendens in dit topic is dat we je aan het handje moeten nemen, en dat is niet echt de bedoeling hier; een bepaald niveau van kennis achten we wel bekend hier. Om die reden doe ik dit topic ook dicht. Je zal eerst jezelf moeten helpen voordat wij je hulp kunnen bieden. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.