TalkPHP

TalkPHP (http://www.talkphp.com/forums.php)
-   General (http://www.talkphp.com/general/)
-   -   smiley code - clickable only with IE (http://www.talkphp.com/general/1807-smiley-code-clickable-only-ie.html)

exorcist 12-29-2007 03:04 AM

smiley code - clickable only with IE
 
Can anybody help me to fix that problem, because smileys are clickable ony with Internet Explorer, with Firefox they only work if you manualy write them in message body.

Code:


$message = str_replace ("\n","<br>", $message);
$message = str_replace ("|~~|","", $message);
$message = str_replace (":)","<img src=images/smile.gif>", $message);
$message = str_replace (":(","<img src=images/sad.gif>", $message);
$message = str_replace (":P","<img src=images/tongue.gif>", $message);
$message = str_replace (":o","<img src=images/scared.gif>", $message);
$message = str_replace (":C","<img src=images/mad.gif>", $message);
$message = str_replace (";)","<img src=images/rolleyes.gif>", $message);
$message = str_replace (";Y","<img src=images/thumbsup.gif>", $message);
$message = str_replace (":D","<img src=images/laugh.gif>", $message);
$message = str_replace (":s","<img src=images/shocking.gif>", $message);
$message = str_replace (":r","<img src=images/naughty.gif>", $message);
$message = str_replace (":-o","<img src=images/sweatdrop.gif>", $message);
$message = str_replace (":O)","<img src=images/clown.gif>", $message);
$message = str_replace (":H)","<img src=images/heart.gif>", $message);
$message = str_replace (":i)","<img src=images/info.gif>", $message);
$message = str_replace (":Q)","<img src=images/question.gif>", $message);
$message = stripslashes ($message);


deflated 12-29-2007 04:36 AM

Hello,

what do you mean by making an image clickable? Like a simple a-href link? I think your problem isn't a PHP specific issue. Anyway, I'd like to help you. Concerning your code: There are some things I'd do a bit different. For instance it would be faster to have to arrays $search and $replace that you pass to str_replace() instead of calling str_replace() for every smiley you replace by the filename. Here's the modified code. I hope there aren't any mistakes as I haven't tested it:

PHP Code:

$icons = array (
  
':)' => 'smile',
  
':(' => 'sad'
  
//...
);

//-----------------------------------------------

$search  = array();
$replace = array();

foreach (
$icons as $icon => $file) {
  
$search [] = $icon;
  
$replace[] = '<img src="http://www.talkphp.com/images/"' $icon '.gif">';
  
//if you want to have the icon clickable you need to use <a href="...">...</a>
}

$search  += array("\n"'|~~|');

//Andrew had the idea of using nl2br() Thanks!
//$replace += array('<br />', '');
$message nl2br($message);

$message str_replace($search$replace$message);

//are you using magic quotes or why do you want to strip out slashes from your message?
$message stripslashes($message); 


Andrew 12-29-2007 05:01 AM

Also, for future reference, instead of using str_replace() to get new lines to <br>, you can use nl2br(). PHP: nl2br - Manual

deflated 12-29-2007 05:06 AM

Good idea! ^^
I've changed that in my code. :-)


All times are GMT. The time now is 12:08 AM.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.1.0