作者:咸咸 | 来源:互联网 | 2023-01-28 13:57
1> crazyloonybi..:
试着看preg_match_all
功能.preg_match
停止照顾它找到第一场比赛,这就是为什么你只得到第一个表情符号.
取自这个答案:
preg_match
停止照看第一场比赛.preg_match_all
另一方面,继续查看,直到它完成处理整个字符串.找到匹配后,它会使用字符串的其余部分来尝试应用另一个匹配项.
http://php.net/manual/en/function.preg-match-all.php
所以你的代码将成为:
$string = " hello world ";
preg_match_all('/([0-9#][\x{20E3}])|[\x{00ae}\x{00a9}\x{203C}\x{2047}\x{2048}\x{2049}\x{3030}\x{303D}\x{2139}\x{2122}\x{3297}\x{3299}][\x{FE00}-\x{FEFF}]?|[\x{2190}-\x{21FF}][\x{FE00}-\x{FEFF}]?|[\x{2300}-\x{23FF}][\x{FE00}-\x{FEFF}]?|[\x{2460}-\x{24FF}][\x{FE00}-\x{FEFF}]?|[\x{25A0}-\x{25FF}][\x{FE00}-\x{FEFF}]?|[\x{2600}-\x{27BF}][\x{FE00}-\x{FEFF}]?|[\x{2900}-\x{297F}][\x{FE00}-\x{FEFF}]?|[\x{2B00}-\x{2BF0}][\x{FE00}-\x{FEFF}]?|[\x{1F000}-\x{1F6FF}][\x{FE00}-\x{FEFF}]?/u', $string, $emojis);
print_r($emojis[0]); // Array ( [0] => [1] => )