我正在分析非正式聊天风格的消息以获取情绪和其他信息。我需要将所有表情符号替换为它们的实际含义,以使系统更容易解析消息。
目前我有以下代码:
$str = "Am I :) or :( today?";
$emoticons = array(
':)' => 'happy',
':]' => 'happy',
':(' => 'sad',
':[' => 'sad',
);
$str = str_replace(array_keys($emoticons), array_values($emoticons), $str);
这会直接替换字符串,因此不会考虑表情符号是否被其他字符包围。
如何使用正则表达式并preg_replace
确定它是否实际上是表情符号而不是字符串的一部分?
另外,我如何扩展我的数组,happy
以便例如元素可以包含两个条目;:)
和:]
?