我有一个字符串: -
Hi, Jax\ud83d\ude1b\ud83d\ude44! can we go for a coffee?
现在,表情符号是UTF16(我想)。我需要提取'\ud83d\ude1b\ud83d\ude44
'并在每对之间给出一个空格,就像这样。
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?
所以需要做什么: -
Jax\ud83d\ude1b
和Jax \ud83d\ude1b
。答案 0 :(得分:1)
我不完全确定你想要什么,但这显示了如何(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
在它们之间插入一个空格,如果有背对背的表情符号(或者更确切地说是*两个unicode字母后跟另一个的开头 - \u
)。
$pattern = '/((?:\\\\u[\dA-F]{4}){2})(\\\\u)/i';
print_r(preg_replace($pattern, '$1 $2', $input));