Массив только 1-й смайлик заменил мой код

0

В моем коде смайликов он заменил только один из моих кодов, который означает только :) может отображать изображение.

Какая у меня ошибка в моем коде, пожалуйста.

Мой код

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).'';
  • 0
    почему бы вам не использовать простой str_replace(array_keys($icons), $icons, $text);
Теги:

1 ответ

3
Лучший ответ

Это происходит потому, что вы возвращаетесь в цикл после первой замены. Переместите выход за пределы цикла.

    foreach ($icons as $search => $replace) {
        $text = preg_replace("#(?<=\s|^)" . preg_quote($search) . "#", $replace, $text);

    }
    return $text;
  • 0
    Спасибо, сэр ....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню