从给定字符串中提取 \ud83d\ude1b\ud83d\ude44 表情符号字符串:
Extract \ud83d\ude1b\ud83d\ude44 emoji string from a a given string:
我有一个像这样的字符串:-
Hi, Jax\ud83d\ude1b\ud83d\ude44! can we go for a coffee?
现在,表情符号是 UTF16(我认为)。我需要提取'\ud83d\ude1b\ud83d\ude44
'并在每对之间给出一个space,就像这样。
Hi, Jax\ud83d\ude1b \ud83d\ude44! can we go for a coffee?
如何在 PHP 中实现此目的?
我需要的更多示例:-
Hi, Jax\ud83d\ude1b \ud83d\ude44! can we go for\ud83d\ude1b \ud83d\ude44 a coffee?
那么需要做什么:-
- 用户可以在任何普通单词后留下也可以不留下任何 space,只需输入表情符号即可。我的意思是,
Jax\ud83d\ude1b
和 Jax \ud83d\ude1b
。
- 表情符号可能总是不同,因为它们来自 DB。如何将每个表情符号模式拆分成对?
我不太确定你想要什么,但这显示了如何 (1) 和 (2)。
$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
在它们之间插入一个 space 如果有背靠背的表情符号(或者更确切地说 *两个 unicode 字母后跟另一个 - \u
).
$pattern = '/((?:\\u[\dA-F]{4}){2})(\\u)/i';
print_r(preg_replace($pattern, ' ', $input));
我有一个像这样的字符串:-
Hi, Jax\ud83d\ude1b\ud83d\ude44! can we go for a coffee?
现在,表情符号是 UTF16(我认为)。我需要提取'\ud83d\ude1b\ud83d\ude44
'并在每对之间给出一个space,就像这样。
Hi, Jax\ud83d\ude1b \ud83d\ude44! can we go for a coffee?
如何在 PHP 中实现此目的?
我需要的更多示例:-
Hi, Jax\ud83d\ude1b \ud83d\ude44! can we go for\ud83d\ude1b \ud83d\ude44 a coffee?
那么需要做什么:-
- 用户可以在任何普通单词后留下也可以不留下任何 space,只需输入表情符号即可。我的意思是,
Jax\ud83d\ude1b
和Jax \ud83d\ude1b
。 - 表情符号可能总是不同,因为它们来自 DB。如何将每个表情符号模式拆分成对?
我不太确定你想要什么,但这显示了如何 (1) 和 (2)。
$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
在它们之间插入一个 space 如果有背靠背的表情符号(或者更确切地说 *两个 unicode 字母后跟另一个 - \u
).
$pattern = '/((?:\\u[\dA-F]{4}){2})(\\u)/i';
print_r(preg_replace($pattern, ' ', $input));