В моем коде смайликов он заменил только один из моих кодов, который означает только :) может отображать изображение.
Какая у меня ошибка в моем коде, пожалуйста.
Мой код
function smileys($text){
// Smiley to image
$icons = array(
':)' => '<img src="smilies/smile.gif" border="0" alt="" />',
':-)' => '<img src="smilies/smile.gif" border="0" alt="" />',
':D' => '<img src="smilies/smile.gif" border="0" alt="" />',
':-(' => '<img src="smilies/angry.gif" border="0" alt="" />',
'angel' => '<img src="smilies/angel.gif" border="0" alt="" />',
'at' => '<img src="smilies/at.gif" border="0" alt="" />',
':-D' => '<img src="smilies/biggrin.gif" border="0" alt="" />',
'lol' => '<img src="smilies/biggrin.gif" border="0" alt="" />',
':-]' => '<img src="smilies/blush.gif" border="0" alt="" />',
':-?' => '<img src="smilies/confused.gif" border="0" alt="" />',
'B-)' => '<img src="smilies/cool.gif" border="0" alt="" />',
'B)' => '<img src="smilies/cool.gif" border="0" alt="" />',
';)' => '<img src="smilies/dodgy.gif" border="0" alt="" />',
':(' => '<img src="smilies/sad.gif" border="0" alt="" />',
':-(' => '<img src="smilies/sad.gif" border="0" alt="" />',
'shy' => '<img src="smilies/shy.gif" border="0" alt="" />',
'|-)' => '<img src="smilies/sleepy.gif" border="0" alt="" />',
':-P' => '<img src="smilies/tongue.gif" border="0" alt="" />',
':-|' => '<img src="smilies/undecided.gif" border="0" alt="" />',
';-)' => '<img src="smilies/wink.gif" border="0" alt="" />',
);
// Now you need find and replace
foreach($icons as $search => $replace){
$text = preg_replace("#(?<=\s|^)" . preg_quote($search) . "#", $replace, $text);
return $text;
}
}
echo''.smileys($description).'';
Это происходит потому, что вы возвращаетесь в цикл после первой замены. Переместите выход за пределы цикла.
foreach ($icons as $search => $replace) {
$text = preg_replace("#(?<=\s|^)" . preg_quote($search) . "#", $replace, $text);
}
return $text;
str_replace(array_keys($icons), $icons, $text);