现在我正在使用这个表情符号函数:
function emoticons($text) {
$icons = array(
':)' => '<img src="/images/blank.gif" alt="smile" class="icon_smile" />',
':-)' => '<img src="/images/blank.gif" alt="smile" class="icon_smile" />',
':D' => '<img src="/images/blank.gif" alt="smile" class="icon_laugh" />',
':d' => '<img src="/images/blank.gif" alt="laugh" class="icon_laugh" />',
';)' => '<img src="/images/blank.gif" alt="wink" class="icon_wink" />',
':P' => '<img src="/images/blank.gif" alt="tounge" class="icon_tounge" />',
':-P' => '<img src="/images/blank.gif" alt="tounge" class="icon_tounge" />',
':-p' => '<img src="/images/blank.gif" alt="tounge" class="icon_tounge" />',
':p' => '<img src="/images/blank.gif" alt="tounge" class="icon_tounge" />',
':(' => '<img src="/images/blank.gif" alt="sad face" class="icon_sad" />',
':o' => '<img src="/images/blank.gif" alt="shock" class="icon_shock" />',
':O' => '<img src="/images/blank.gif" alt="shock" class="icon_shock" />',
':0' => '<img src="/images/blank.gif" alt="shock" class="icon_shack" />',
':|' => '<img src="/images/blank.gif" alt="straight face" class="icon_straight" />',
':-|' => '<img src="/images/blank.gif" alt="straight face" class="icon_straight" />',
':/' => '<img src="/images/blank.gif" alt="straight face" class="icon_straight" />',
':-/' => '<img src="/images/blank.gif" alt="straight face" class="icon_straight" />'
);
return strtr($text, $icons);
}
但是,如果您输入一个链接,http://
的:/
部分会被替换:
同样的,对于代码(每行前面有4个空格来创建代码框),但由于某种原因,一个简单的)
也会被替换(带有一个眨眼的表情):
除了像这样替换所有图标之外,是否有更好的解决方法?显然这不起作用。我在Google上搜索了很多,没有找到更好的方法。我还尝试在上面的关联数组中在每个表情符号前加一个空格,但如果您只输入一个:)而没有任何其他字符,则无法正常工作。
preg_quote
给一个赞,它太棒了! - Timstrtr()
吗?编辑:嗯,出于某种原因,现在没有图标被转换为图片了。我想知道是否有一种方法可以使代码框中的无文本表情符号转换为图像? - Nathan