如何在字符串中使用emojicons?

时间:2017-11-14 06:47:13

标签: php emoji multibyte

如何将表情符号统计为单个字符?

我有以下记录,其中包含Telegram消息应用程序制作的两个表情符号和链接属性:

{ "text":"abc \ud83d\ude00\ud83e\udd23 www.google.com def", "entities": [{"offset":9,"length":14,"type":"url"}] }

我需要在字符串中找到链接,但使用substr()和mb_substr()在emojicons上无法正常工作。

substr(9, 14) 

返回

  

“إ¸ثœâ,www.google”

将每个表情符号读取为4个字符

mb_substr(9, 14) 

返回

  

“w.google.com d”

将每个表情符号读为1个字符

我需要一个函数来将每个表情符号读取为2个字符。

编辑:我需要澄清除了链接之外还有其他实体。所以找到链接并不是真正的解决方案。

1 个答案:

答案 0 :(得分:0)

用于从字符串中获取URL,您可以这样做:

<?php
    $string = 'abc \ud83d\ude00\ud83e\udd23 www.google.com def';
    $sections = explode(' ', $string);
    $urls = array();
    foreach($sections as $section){
        preg_match('{\b(?:http://)?(www\.)?([^\s]+)(\.com|\.org|\.net)\b}mi', $section, $matches, PREG_OFFSET_CAPTURE);
        if(isset($matches[0][0]) and $matches[0][0]!='')
            $urls[] = $matches[0][0];
    }

    print_r($urls);
?>