webForumDet fria alternativet

Lägga in bild vid smilie

PHP

28 svar · 1 086 visningar · startad av silfver

Medlem sedan apr. 200312 679 inlägg
Frågan#1

Någon som vet hur man kan göra så att till exempel en :] blir en img-fil med hjälp av någon smidig php-kod?

Lite off topic: får man kopiera "smilisarna" från webforum? :)

Edit: använder mig inte av mySQL osv.

Medlem sedan nov. 200013 890 inlägg
Medlem sedan apr. 200312 679 inlägg
#3

Tackar så mycket Web-Tor! Visste inte riktigt vad jag skulle söka efter, annars brukar jag göra det ;)

Medlem sedan apr. 200312 679 inlägg
#4

Då jag inte är en hejare på php så får jag inte koden att funka.
Varför funkar det inte så som jag gjort nedan?

<?php
$smilie = eregi_replace(":)", "<img src=\"img/smile.gif\">", $smilie);
$smilie = eregi_replace(":(", "<img src=\"img/smile/smiley_=(.gif\">", $smilie);
?>
Medlem sedan okt. 20001 285 inlägg
#5

så här kanske ?

$message = str_replace (":)", "<img src=\"/images/forum/icons/smiley.gif\">", $message);

. :birp

Medlem sedan apr. 200312 679 inlägg
#6

Hehe!

Vågar inte testa, men en polare fick det här att fungera:

<?php

function callback($buffer)
{
  $returnthis = eregi_replace(":)", "<img src='img/smile.gif'>", $buffer);
  $returnthis = eregi_replace(":(", "<img src='img/smile2.gif'>", $returnthis); 
  return ($returnthis);
}

ob_start("callback");

?>

Men problemet är att man inte kan lägga in fler strängar med smilies, eller. Jag vet inte hur?

mvh

Medlem sedan juni 20006 031 inlägg
#7

Så här ser det ut i ett script jag har gjort, så det vet jag att fungerar.

$text = $r["text"];
$text = str_replace("x(", "<IMG SRC=\"bilder/smilies/angry.gif\">", $text);
$text = str_replace("§e", "<IMG SRC=\"bilder/smilies/devilgrin.gif\">", $text);
$text = str_replace(":bire", "<IMG SRC=\"bilder/smilies/bire.gif\">", $text);
$text = str_replace(":f", "<IMG SRC=\"bilder/smilies/flirt.gif\">", $text);
$text = str_replace(":q", "<IMG SRC=\"bilder/smilies/quest.gif\">", $text);
$text = str_replace(":o", "<IMG SRC=\"bilder/smilies/redface.gif\">", $text);
$text = str_replace(":r", "<IMG SRC=\"bilder/smilies/shame.gif\">", $text);
$text = str_replace(":D", "<IMG SRC=\"bilder/smilies/biggrin.gif\">", $text);
$text = str_replace(";)", "<IMG SRC=\"bilder/smilies/wink.gif\">", $text);
$text = str_replace(":P", "<IMG SRC=\"bilder/smilies/blah.gif\">", $text);
$text = str_replace(":i", "<IMG SRC=\"bilder/smilies/idea.gif\">", $text);
$text = str_replace(":birp", "<IMG SRC=\"bilder/smilies/beergrin.gif\">", $text);
$text = str_replace(":(", "<IMG SRC=\"bilder/smilies/frown.gif\">", $text);
$text = str_replace(":)", "<IMG SRC=\"bilder/smilies/smile.gif\">", $text);
$text = str_replace(":x", "<IMG SRC=\"bilder/smilies/dead.gif\">", $text);
$text = str_replace(":h", "<IMG SRC=\"bilder/smilies/cool.gif\">", $text);
$text = str_replace(":stud", "<IMG SRC=\"bilder/smilies/stud.gif\">", $text);
$text = str_replace(":p", "<IMG SRC=\"bilder/smilies/tongue.gif\">", $text);
$text = str_replace(":l", "<IMG SRC=\"bilder/smilies/hrmpf.gif\">", $text);
$text = str_replace("§jr", "<IMG SRC=\"bilder/smilies/devel.gif\">", $text);
$text = str_replace(":e", "<IMG SRC=\"bilder/smilies/biggrin.gif\">", $text);

r/ Såg nu att du inte använde databas, men låter det stå kvar ändå. :)

Medlem sedan apr. 200312 679 inlägg
#8

Pedda
Ja, men jag förstår inte hur jag ska använda mig av den koden.
Den jag la in där funkar, men jag vet inte hur man gör för att läggat till fler strängar, då slutar scriptet att fungera...

Medlem sedan juli 20023 617 inlägg
#9

silfver skrev:

Pedda
Ja, men jag förstår inte hur jag ska använda mig av den koden.
Den jag la in där funkar, men jag vet inte hur man gör för att läggat till fler strängar, då slutar scriptet att fungera...

Gör en funktion av Peddas kod.

funktion smiley($m){
  $text = $m;
  $text = str_replace("x(", "<IMG   SRC=\"bilder/smilies/angry.gif\">", $text);
  $text = str_replace("§e", "<IMG SRC=\"bilder/smilies/devilgrin.gif\">", $text);
  $text = str_replace(":bire", "<IMG   SRC=\"bilder/smilies/bire.gif\">", $text);
  $text = str_replace(":f", "<IMG SRC=\"bilder/smilies/flirt.gif\">",  $text);
  $text = str_replace(":q", "<IMG SRC=\"bilder/smilies/quest.gif\">", $text);
  $text = str_replace(":o", "<IMG SRC=\"bilder/smilies/redface.gif\">", $text);
  $text = str_replace(":r", "<IMG SRC=\"bilder/smilies/shame.gif\">", $text);
  $text = str_replace(":D", "<IMG SRC=\"bilder/smilies/biggrin.gif\">", $text);
  $text = str_replace(";)", "<IMG SRC=\"bilder/smilies/wink.gif\">", $text);
  $text = str_replace(":P", "<IMG SRC=\"bilder/smilies/blah.gif\">", $text);
  $text = str_replace(":i", "<IMG SRC=\"bilder/smilies/idea.gif\">", $text);
  $text = str_replace(":birp", "<IMG SRC=\"bilder/smilies/beergrin.gif\">", $text);
  $text = str_replace(":(", "<IMG SRC=\"bilder/smilies/frown.gif\">", $text);
  $text = str_replace(":)", "<IMG SRC=\"bilder/smilies/smile.gif\">", $text);
  $text = str_replace(":x", "<IMG SRC=\"bilder/smilies/dead.gif\">", $text);
  $text = str_replace(":h", "<IMG SRC=\"bilder/smilies/cool.gif\">", $text);
  $text = str_replace(":stud", "<IMG SRC=\"bilder/smilies/stud.gif\">", $text);
  $text = str_replace(":p", "<IMG SRC=\"bilder/smilies/tongue.gif\">", $text);
  $text = str_replace(":l", "<IMG SRC=\"bilder/smilies/hrmpf.gif\">", $text);
  $text = str_replace("§jr", "<IMG SRC=\"bilder/smilies/devel.gif\">", $text);
  $text = str_replace(":e", "<IMG SRC=\"bilder/smilies/biggrin.gif\">", $text);
  return $text;
}

Som du sedan kallar på med t.ex:

print(smiley($message))
Medlem sedan apr. 200312 679 inlägg
#10

Tack för ditt svar. Men hur menar du att jag ska kalla på texten?
Jag vill ju att det ska räcka med att jag skriver "=)" så ska det bli en smiley.

En kompis gjorde den här, som jag skrev tidigare i tråden, och om du skriver så, så förstår jag precis hur jag ska göra :D
http://home.sebbz.com/~sebbz/silfverkod.php

Medlem sedan juli 20023 617 inlägg
#11

Ok, nu förstod jag vad du var ute efter :) :) :)

Bygg ut din kod såhär:

function callback($buffer)
{
  $returnthis = eregi_replace("=)", "<img src='img/smile.gif'>", $buffer);
  $returnthis = eregi_replace(":)", "<img src='img/smile2.gif'>", $returnthis); 
  $returnthis = eregi_replace(";)", "<img src='img/smile3.gif'>", $returnthis); 
  $returnthis = eregi_replace(":o", "<img src='img/smile4.gif'>", $returnthis); 
  $returnthis = eregi_replace(":!", "<img src='img/smile5.gif'>", $returnthis); 
  return ($returnthis);
}

...osv

Borde funka tycker jag.

Medlem sedan apr. 200312 679 inlägg
#12

Underbart! Funkar prima! :D

Medlem sedan apr. 200312 679 inlägg
#13

Hm. Eller kanske inte ändå. Försökte skriva in alla gubbar på en gång:

<?php

function callback($buffer)
{
  $returnthis = eregi_replace(":(", "<img src='img/frown.gif'>", $buffer);
  $returnthis = eregi_replace(":)", "<img src='img/smile.gif'>", $returnthis); 
  $returnthis = eregi_replace(";)", "<img src='img/wink.gif'>", $returnthis); 
  $returnthis = eregi_replace(":$", "<img src='img/shame.gif'>", $returnthis);
  $returnthis = eregi_replace(":x", "<img src='img/angry.gif'>", $returnthis);
  $returnthis = eregi_replace(":beer:", "<img src='img/beergrin.gif'>", $returnthis);
  $returnthis = eregi_replace(":beer2:", "<img src='img/bire.gif'>", $returnthis);
  $returnthis = eregi_replace("8)", "<img src='img/cool.gif'>", $returnthis);
  $returnthis = eregi_replace("x(", "<img src='img/dead.gif'>", $returnthis);
  $returnthis = eregi_replace("(6)", "<img src='img/devel.gif'>", $returnthis);
  $returnthis = eregi_replace(":D", "<img src='img/supergrin.gif'>", $returnthis);
  $returnthis = eregi_replace(":flirt:", "<img src='img/dead.gif'>", $returnthis);
  $returnthis = eregi_replace(":/", "<img src='img/dead.gif'>", $returnthis);
  $returnthis = eregi_replace(":idea:", "<img src='img/dead.gif'>", $returnthis);
  $returnthis = eregi_replace(":DD", "<img src='img/laugh.gif'>", $returnthis);
  $returnthis = eregi_replace(":oo", "<img src='img/look.gif'>", $returnthis);
  $returnthis = eregi_replace(":?", "<img src='img/quest.gif'>", $returnthis);
  $returnthis = eregi_replace(":stud:", "<img src='img/stud.gif'>", $returnthis);
  $returnthis = eregi_replace(":P", "<img src='img/tongue.gif'>", $returnthis);
  return ($returnthis);
}

ob_start("callback");

?>

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
:(<br>
:)<br>
;)<br>
:$<br>
:x<br>
:beer:<br>
:beer2:<br>
8)<br>
x(<br>
(6)<br>
:D<br>
:flirt:<br>
:/<br>
:idea:<br>
:DD<br>
:oo<br>
:?<br>
:stud:<br>
:P
</body>
</html>
<?php

ob_end_flush();

?>

Men då blir det så här http://silfver.se/test.php

Varför blir det så?

Edit: Bry dig inte om att bilden inte syns, för bilderna är inte upplagda. Men den ska ändå visa mer än en bild?

Medlem sedan mars 20025 907 inlägg
#14

Varför böka med regexp när det ändå är såpass enkla saker som ska replaceas? Byt ut din funktion mot denna så fungerar det:

function callback($buffer)

{

  $returnthis = str_replace(":(", "<img src='img/frown.gif'>", $buffer);

  $returnthis = str_replace(":)", "<img src='img/smile.gif'>", $returnthis); 

  $returnthis = str_replace(";)", "<img src='img/wink.gif'>", $returnthis); 

  $returnthis = str_replace(":$", "<img src='img/shame.gif'>", $returnthis);

  $returnthis = str_replace(":x", "<img src='img/angry.gif'>", $returnthis);

  $returnthis = str_replace(":beer:", "<img src='img/beergrin.gif'>", $returnthis);

  $returnthis = str_replace(":beer2:", "<img src='img/bire.gif'>", $returnthis);

  $returnthis = str_replace("8)", "<img src='img/cool.gif'>", $returnthis);

  $returnthis = str_replace("x(", "<img src='img/dead.gif'>", $returnthis);

  $returnthis = str_replace("(6)", "<img src='img/devel.gif'>", $returnthis);

  $returnthis = str_replace(":D", "<img src='img/supergrin.gif'>", $returnthis);

  $returnthis = str_replace(":flirt:", "<img src='img/dead.gif'>", $returnthis);

  $returnthis = str_replace(":/", "<img src='img/dead.gif'>", $returnthis);

  $returnthis = str_replace(":idea:", "<img src='img/dead.gif'>", $returnthis);

  $returnthis = str_replace(":DD", "<img src='img/laugh.gif'>", $returnthis);

  $returnthis = str_replace(":oo", "<img src='img/look.gif'>", $returnthis);

  $returnthis = str_replace(":?", "<img src='img/quest.gif'>", $returnthis);

  $returnthis = str_replace(":stud:", "<img src='img/stud.gif'>", $returnthis);

  $returnthis = str_replace(":P", "<img src='img/tongue.gif'>", $returnthis);

  return ($returnthis);

}
Medlem sedan apr. 200312 679 inlägg
#15

Peeer Tack :) Det funkade faktiskt!

Medlem sedan apr. 20041 597 inlägg
#16

Peeer skrev:

Varför böka med regexp när det ändå är såpass enkla saker som ska replaceas? Byt ut din funktion mot denna så fungerar det:

function callback($buffer)

{

  $returnthis = str_replace(":(", "<img src='img/frown.gif'>", $buffer);

  $returnthis = str_replace(":)", "<img src='img/smile.gif'>", $returnthis); 

  $returnthis = str_replace(";)", "<img src='img/wink.gif'>", $returnthis); 

  $returnthis = str_replace(":$", "<img src='img/shame.gif'>", $returnthis);

  $returnthis = str_replace(":x", "<img src='img/angry.gif'>", $returnthis);

  $returnthis = str_replace(":beer:", "<img src='img/beergrin.gif'>", $returnthis);

  $returnthis = str_replace(":beer2:", "<img src='img/bire.gif'>", $returnthis);

  $returnthis = str_replace("8)", "<img src='img/cool.gif'>", $returnthis);

  $returnthis = str_replace("x(", "<img src='img/dead.gif'>", $returnthis);

  $returnthis = str_replace("(6)", "<img src='img/devel.gif'>", $returnthis);

  $returnthis = str_replace(":D", "<img src='img/supergrin.gif'>", $returnthis);

  $returnthis = str_replace(":flirt:", "<img src='img/dead.gif'>", $returnthis);

  $returnthis = str_replace(":/", "<img src='img/dead.gif'>", $returnthis);

  $returnthis = str_replace(":idea:", "<img src='img/dead.gif'>", $returnthis);

  $returnthis = str_replace(":DD", "<img src='img/laugh.gif'>", $returnthis);

  $returnthis = str_replace(":oo", "<img src='img/look.gif'>", $returnthis);

  $returnthis = str_replace(":?", "<img src='img/quest.gif'>", $returnthis);

  $returnthis = str_replace(":stud:", "<img src='img/stud.gif'>", $returnthis);

  $returnthis = str_replace(":P", "<img src='img/tongue.gif'>", $returnthis);

  return ($returnthis);

}

Jag satt och letade efter ett skript som ersätter smileykoder med en bild. Fann denna tråd och funktionen ovan föll mig i smaken. Jag utgår ifrån att man kan använda denna funktion mot en databas där jag har alla smileykoder och tecken lagrade och sedan loopa ut alla kombinationer till str_replace? Funkis? :)

Medlem sedan juli 20023 617 inlägg
#17

lillebror skrev:

Funkis? :)

Jepp! :)

Medlem sedan apr. 20041 597 inlägg
#18

Great!

Fick det att fungera när jag körde med statisk information i funktionen. Sedan när jag kopplade den mot databasen skriver den inte ut någonting. Sitter och felsöker men tänkte slänga ut koden så kanske någon annan ser ett fel som jag inte har upptäckt ännu! :)

function showSmiley($returnthis) {
	
	$sqlSelect = "SELECT code, path, filename FROM tblforumsmiley";
	$RSobj = mysql_query($sqlSelect) or die (mysql_error());	

	while($smiley = mysql_fetch_array($RSobj)) {
		$returnthis = str_replace("".$smiley['code']."", "<img src=\"".$smiley['path'].$smiley['filename']."\"", $returnthis);
	}

	return $returnthis;
}
Medlem sedan juli 20023 617 inlägg
#19

Du har glömt ett /> i image-taggen, men det var väl inte ditt problem riktigt...
Vad har "". och ."" för funktion egentligen?

Medlem sedan apr. 20041 597 inlägg
#20

Min teori är att $returnthis blir överskriven succesivt av varje ny smileykod vilket får till följd att smileykoderna "äts upp"...

Tittar man på det ursprungliga kodexemplet så är den första variabeln i funktionen str_replace inte samma som för de som kommer efter.

286 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
136 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)