当用户想要发送消息时,他可以使用表情符号。 会发生什么,是用户点击表情符号,以便插入相应的文本,如下所示:
:D
现在,在发送消息后,另一个人想要看到它。 我想要的是用图像替换:D ......
这是我得到的:
$patterns = array();
$patterns[0] = '/:)/';
$patterns[1] = '/:(/';
$patterns[2] = '/:D/';
$patterns[3] = '/:C/';
$patterns[4] = '/:A/';
$patterns[5] = '/:H/';
$patterns[6] = '/:L/';
$patterns[7] = '/:O/';
$patterns[8] = '/:S/';
$patterns[9] = '/;)/';
$replacements = array();
$replacements[0] = '<img alt=":)" border="0" src="./images/smileys/happy.png" width="25px" />';
$replacements[1] = '<img alt=":(" border="0" src="./images/smileys/sad.png" width="25px" />';
$replacements[2] = '<img alt=":D" border="0" src="./images/smileys/veryhappy.png" width="25px" />';
$replacements[3] = '<img alt=":C" border="0" src="./images/smileys/cry.png" width="25px" />';
$replacements[4] = '<img alt=":A" border="0" src="./images/smileys/angry.png" width="25px" />';
$replacements[5] = '<img alt=":H" border="0" src="./images/smileys/heart.png" width="25px" />';
$replacements[6] = '<img alt=":L" border="0" src="./images/smileys/love.png" width="25px" />';
$replacements[7] = '<img alt=":O" border="0" src="./images/smileys/nothing.png" width="25px" />';
$replacements[8] = '<img alt=":S" border="0" src="./images/smileys/scared.png" width="25px" />';
$replacements[9] = '<img alt=";)" border="0" src="./images/smileys/wink.png" width="25px" />';
preg_replace($patterns, $replacements, $bericht);
但这些不是正确的Regexes ...所以我得到一个php错误。 在不久的将来,我想学习正则表达式如何工作的教程,但我希望现在有人可以帮助我。
有一种简单快捷的方法吗?最喜欢每个模式,就像我现在做的那样,而不是一个大的正则表达式。
答案 0 :(得分:3)
转义括号:
$patterns[0] = '/:\)/';
$patterns[1] = '/:\(/';
$patterns[9] = '/;\)/';
并且还将最后一行更改为:
$bericht = preg_replace($patterns, $replacements, $bericht);
答案 1 :(得分:3)
由于您不需要正则表达式搜索模式,因此您只需使用str_replace
。
从手册页:
如果你不需要花哨的替换规则(比如正则表达式),你应该总是使用这个函数而不是preg_replace()。
$bericht = str_replace($patterns, $replacements, $bericht);
答案 2 :(得分:0)
你正在替换固定字符串,所以根本不需要在这里使用正则表达式模式;直截了当的str_replace()
会很好。
或者更好的是,使用strtr()
,因为您可以使用关联数组替换数据......
$replacements = array(
':)' = '<img alt=":)" border="0" src="./images/smileys/happy.png" width="25px" />',
':(' = '<img alt=":(" border="0" src="./images/smileys/sad.png" width="25px" />',
':D' = '<img alt=":D" border="0" src="./images/smileys/veryhappy.png" width="25px" />',
':C' = '<img alt=":C" border="0" src="./images/smileys/cry.png" width="25px" />',
':A' = '<img alt=":A" border="0" src="./images/smileys/angry.png" width="25px" />',
':H' = '<img alt=":H" border="0" src="./images/smileys/heart.png" width="25px" />',
':L' = '<img alt=":L" border="0" src="./images/smileys/love.png" width="25px" />',
':O' = '<img alt=":O" border="0" src="./images/smileys/nothing.png" width="25px" />',
':S' = '<img alt=":S" border="0" src="./images/smileys/scared.png" width="25px" />',
';)' = '<img alt=";)" border="0" src="./images/smileys/wink.png" width="25px" />',
);
$output = strtr($input, $replacements);
更简单!
你应该注意的一件事是无意中更换了不是表情符号的字符串。对于执行此类操作的程序而言,这是一个非常常见的问题。 (当我不打算将(c)
和8)
这样的内容转换成图标时,我很快被Skype抓住了。