首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从给定字符串中提取\ud83d\ude1b\ud83d\ude1b 44表情符号字符串:

从给定字符串中提取\ud83d\ude1b\ud83d\ude1b 44表情符号字符串:
EN

Stack Overflow用户
提问于 2016-08-30 09:41:43
回答 1查看 981关注 0票数 0

我有一根绳子:-

代码语言:javascript
复制
Hi, Jax\ud83d\ude1b\ud83d\ude44! can we go for a coffee?

现在,表情符号是在UTF16(我想)。我需要提取'\ud83d\ude1b\ud83d\ude44‘,并在每对之间留出一个空间,如下所示。

代码语言:javascript
复制
Hi, Jax\ud83d\ude1b \ud83d\ude44! can we go for a coffee?

如何在PHP中实现这一点?

我需要更多的例子:-

代码语言:javascript
复制
Hi, Jax\ud83d\ude1b \ud83d\ude44! can we go for\ud83d\ude1b \ud83d\ude44 a coffee?

所以我们需要做的是:-

  1. 用户可以或不可能在任何普通单词后留下任何空格,只需键入一个表情符号即可。我是说Jax\ud83d\ude1bJax \ud83d\ude1b
  2. 表情符号可能总是不同的,因为它们来自DB。如何将每个表情符号模式分成两组?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-30 10:17:28

我不确定你想要什么,但这说明了如何(1)和(2)。

代码语言:javascript
复制
$input = 'Hi, Jax\ud83d\ude1b\ud83d\ude44! can we go for a coffee?';

$pattern = '/((?:\\\\u[\dA-F]{4}){2})/i';
preg_match_all ( $pattern , $input , $mtchs); 
print_r($mtchs);

我不太会说php,但是preg_match_all将所有的表情提取到数组- $mtchs (1)中。

然后,对于(2),preg_replace在它们之间插入一个空格,如果有背靠背的表情符号(或者更确切地说,*两个unicode字母,后面跟着另一个- \u)。

代码语言:javascript
复制
$pattern = '/((?:\\\\u[\dA-F]{4}){2})(\\\\u)/i';
print_r(preg_replace($pattern, '$1 $2', $input));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39224001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档