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


single function for emotions,links,preserving line breaks and wordwrap

大家好,我正在做一个项目,我需要找到任何url/链接/电子邮件,保留行刹车,用情感和文字换行代替特殊符号。所以我想知道,如果所有这些都是可能的,只有一个功能或不目前我使用这个功能的情绪

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函数和line brakes函数nl2br但是我想把这些都放在一个函数中请帮我一下

可以使用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和其他函数。当然你也可以在这个函数中使用这些函数

你可以直接调用这三个函数:

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

还可以在函数…的返回语句中使用wordwrapnl2br

创建自定义函数

function letsDoMagic($text, $width = 75, $break = "'n") {
  return wordwrap(nl2br(emotions($text)), $width, $break);
}
// And then somewere in your code
letsDoMagic($text);

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