维基百科定义了很多人们可以使用的表情符号。我想将此列表与字符串中的单词匹配。我现在有这个:
$string = "Lorem ipsum :-) dolor :-| samet";
$emoticons = array(
'[HAPPY]' => array(' :-) ', ' :) ', ' :o) '), //etc...
'[SAD]' => array(' :-( ', ' :( ', ' :-| ')
);
foreach ($emoticons as $emotion => $icons) {
$string = str_replace($icons, " $emotion ", $string);
}
echo $string;
输出:
Lorem ipsum [HAPPY] dolor [SAD] samet
所以原则上这是可行的。但是,我有两个问题:
如您所见,我在数组中的每个表情符号周围都放置了空格,例如 ':-)' 而不是 ':-)' 在我看来,这会降低数组的可读性。有没有办法在没有空格的情况下存储表情符号,但仍然与周围有空格的 $string 匹配?(和现在的代码一样高效吗?)
或者有没有办法将表情符号放在一个变量中,并在空间上爆炸以检查 $string?就像是
$emoticons = array( '[HAPPY]' => ">:] :-) :) :o) :] :3 :c) :> =] 8) =) :} :^)", '[悲伤] ' => ":'-( :'( :'-) :')" //等等...
str_replace 是最有效的方法吗?
我问是因为我需要检查数百万个字符串,所以我正在寻找最有效的方法来节省处理时间:)