本文介绍了PHP从字符串中提取Emoji的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个包含表情符号的字符串。我想从该字符串中提取表情符号,我正在使用下面的代码,但它不是我想要的。
$string = "😃 hello world 🙃";
preg_match('/([0-9#][x{20E3}])|[x{00ae}x{00a9}x{203C}x{2047}x{2048}x{2049}x{3030}x{303D}x{2139}x{2122}x{3297}x{3299}][x{FE00}-x{FEFF}]?|[x{2190}-x{21FF}][x{FE00}-x{FEFF}]?|[x{2300}-x{23FF}][x{FE00}-x{FEFF}]?|[x{2460}-x{24FF}][x{FE00}-x{FEFF}]?|[x{25A0}-x{25FF}][x{FE00}-x{FEFF}]?|[x{2600}-x{27BF}][x{FE00}-x{FEFF}]?|[x{2900}-x{297F}][x{FE00}-x{FEFF}]?|[x{2B00}-x{2BF0}][x{FE00}-x{FEFF}]?|[x{1F000}-x{1F6FF}][x{FE00}-x{FEFF}]?/u', $string, $emojis);
我想要这个:
$emojis = ["😃", "🙃"];
但返回此消息:
$emojis = ["😃"]
也如果:
$string = "😅😇☝🏿"
它只返回第一个表情符号$emoji = ["😅"]
推荐答案
尝试查看preg_match_all
函数。preg_match
在找到第一个匹配项后停止查找,这就是为什么您只能拿回第一个表情符号的原因。
因此您的代码将变为:
$string = "😃 hello world 🙃";
preg_match_all('/([0-9#][x{20E3}])|[x{00ae}x{00a9}x{203C}x{2047}x{2048}x{2049}x{3030}x{303D}x{2139}x{2122}x{3297}x{3299}][x{FE00}-x{FEFF}]?|[x{2190}-x{21FF}][x{FE00}-x{FEFF}]?|[x{2300}-x{23FF}][x{FE00}-x{FEFF}]?|[x{2460}-x{24FF}][x{FE00}-x{FEFF}]?|[x{25A0}-x{25FF}][x{FE00}-x{FEFF}]?|[x{2600}-x{27BF}][x{FE00}-x{FEFF}]?|[x{2900}-x{297F}][x{FE00}-x{FEFF}]?|[x{2B00}-x{2BF0}][x{FE00}-x{FEFF}]?|[x{1F000}-x{1F6FF}][x{FE00}-x{FEFF}]?/u', $string, $emojis);
print_r($emojis[0]); // Array ( [0] => 😃 [1] => 🙃 )
这篇关于PHP从字符串中提取Emoji的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!