如何将表情符号统计为单个字符?
我有以下记录,其中包含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个字符。
编辑:我需要澄清除了链接之外还有其他实体。所以找到链接并不是真正的解决方案。
答案 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);
?>