无法在帖子中再次替换相同的表情符号

时间:2015-01-30 11:12:01

标签: php

如果我再次写一个表情符号“:) :) :)”它将只替换第一个。请问我的问题在哪里。

我的php

function smileys($text){
    // Smiley to image
    $smileys = 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="" />',
    );

    // Now you need find and replace
    foreach ($smileys as $search => $replace) {
        $text = preg_replace("#(?<=\s|^)" . preg_quote($search) . "#", $replace, $text);
    }
    return $text;
}

echo''.smileys($description).'';

1 个答案:

答案 0 :(得分:0)

str_replace是要走的路。

function smileys($text)
{
     $toReplace   = array(
                     ':)',
                     ':-)',
                     ':D',
                      ':-(',
                      'angel');
     $replacement = array(
                     '<img src="smilies/smile.gif" border="0" alt="" />', 
                     '<img src="smilies/smile.gif" border="0" alt="" />', 
                     '<img src="smilies/smile.gif" border="0" alt="" />',
                     '<img src="smilies/angry.gif" border="0" alt="" />',
                     '<img src="smilies/angel.gif" border="0" alt="" />');

     return str_replace($toReplace,$replacement,$text);
}

通过这种方式,您可以将所有类型的表情替换为图像标签,甚至可以同时替换不同的图像标签。