情感,链接,保留换行符和wordwrap的单一功能

时间:2014-08-03 10:05:51

标签: php

大家好,我正在开展一个项目,我需要找到任何网址/链接/电子邮件,保留行刹车,用情感替换特殊符号以及wordwrap。所以我想知道,如果所有这些事情只有一个功能可能,或者目前我没有使用这个功能的情感

function emotions($text) {
$icons = array(
        ':)'    =>  '<img src="smiles/smilee.png" class="icon_smile" title="smiling :)"/>',
        ':d'    =>  '<img src="smiles/lol.gif" class="icon_smile" title="Laughing :d"/>',
        ';)'    =>  '<img src="smiles/wink.png" class="icon_smile" title="Wink ;)"/>',
        ':p'    =>  '<img src="smiles/tongue.png" class="icon_smile" title="Tounge :p"/>',
        ':('    =>  '<img src="smiles/sad.png"  class="icon_smile" title="Sad face :("/>',
        ':o'    =>  '<img src="smiles/shock.png" class="icon_smile" title="Shocking :o"/>',
        ':|'    =>  '<img src="smiles/straight.png" class="icon_smile" title="straight :|"/>',
        '<3'   =>  '<img src="smiles/heart.png" class="heart" title="Heart <3"/>',
        '::s'   =>  '<img src="smiles/sexy.png" class="icon_smile" title="Sexy <s"/>',
        ':D'   =>  '<img src="smiles/lols.gif" class="icon_smile" title="lol :D"/>',

        ':(('   =>  '<img src="smiles/cry.gif" class="icon_smile" title="crying :(("/>',
        ':X'   =>  '<img src="smiles/silent.gif" class="icon_smile" title="sealed lips :X"/>',
        ':B'   =>  '<img src="smiles/bla.gif" style="width:29px;vertical-align:middle;" title="bla bla :B"/>',
        ':C'   =>  '<img src="smiles/coll.gif" style="width:24px;vertical-align:middle;" title="coll me :C"/>'
);
return strtr($text, $icons);
}

?>

我知道对于wordwrap我可以使用函数wordwrap和线制动器nl2br但我希望所有这些在一个功能中请帮助我这个

2 个答案:

答案 0 :(得分:1)

您可以使用str_replace()array_keys()array_values()

function emotions($text) {
    $icons = array(
        ':)'    =>  '<img src="smiles/smilee.png" class="icon_smile" title="smiling :)"/>',
        ':d'    =>  '<img src="smiles/lol.gif" class="icon_smile" title="Laughing :d"/>',
        ';)'    =>  '<img src="smiles/wink.png" class="icon_smile" title="Wink ;)"/>',
        ':p'    =>  '<img src="smiles/tongue.png" class="icon_smile" title="Tounge :p"/>',
        ':('    =>  '<img src="smiles/sad.png"  class="icon_smile" title="Sad face :("/>',
        ':o'    =>  '<img src="smiles/shock.png" class="icon_smile" title="Shocking :o"/>',
        ':|'    =>  '<img src="smiles/straight.png" class="icon_smile" title="straight :|"/>',
        '<3'   =>  '<img src="smiles/heart.png" class="heart" title="Heart <3"/>',
        '::s'   =>  '<img src="smiles/sexy.png" class="icon_smile" title="Sexy <s"/>',
        ':D'   =>  '<img src="smiles/lols.gif" class="icon_smile" title="lol :D"/>',
        ':(('   =>  '<img src="smiles/cry.gif" class="icon_smile" title="crying :(("/>',
        ':X'   =>  '<img src="smiles/silent.gif" class="icon_smile" title="sealed lips :X"/>',
        ':B'   =>  '<img src="smiles/bla.gif" style="width:29px;vertical-align:middle;" title="bla bla :B"/>',
        ':C'   =>  '<img src="smiles/coll.gif" style="width:24px;vertical-align:middle;" title="coll me :C"/>'
    );
    return str_replace(array_keys($icons), array_values($icons), $text);
}

您应该对函数的结果使用nl2br和其他函数。但是当然你也可以在这个函数中使用这些函数。

答案 1 :(得分:1)

你可以完全调用3个函数:

wordwrap(nl2br(emotions($text))[, $width, $break])

您还可以在函数的return语句中使用 wordwrap nl2br ...

创建自定义功能

function letsDoMagic($text, $width = 75, $break = "\n") {
  return wordwrap(nl2br(emotions($text)), $width, $break);
}

// And then somewere in your code
letsDoMagic($text);

这里有1个函数调用。正如我在评论中所说,PHP没有本机函数来在一次调用中完成所有这些工作,这就是你可以创建自己的函数的原因: - )