为了账号安全,请及时绑定邮箱和手机立即绑定

使用正则表达式 (PHP) 从字符串中提取特定数据

使用正则表达式 (PHP) 从字符串中提取特定数据

PHP
幕布斯6054654 2022-08-05 15:58:31
我的目标是检查消息是否有表情符号,如果是,我将转换它们。我遇到了一个问题,无法找出字符串中有多少个表情符号。例:$string = ":+1::+1::+1:"; //can be any string that has :something: between ::这里的目标是得到:+1:(所有他们),但我尝试了两种模式,我一直只得到1场比赛。preg_match_all('/:(.*?):/', $string, $emojis, PREG_SET_ORDER); // $emojis is declared as $emojis='' at the beginning.preg_match_all('/:(\S+):/', $string, $emojis, PREG_SET_ORDER);获得匹配后,其余的代码我正在这样做: if (isset($emojis[0]))    {        $stringMap = file_get_contents("/api/common/emoji-map.json");        $jsonMap = json_decode($stringMap, true);        foreach ($emojis as $key => $value) {            $emojiColon = $value[0];            $emoji = key_exists($emojiColon, $jsonMap) ? $jsonMap[$emojiColon] : '';            $newBody = str_replace($emojiColon, $emoji, $newBody);        }   }我将不胜感激任何帮助或建议,谢谢。
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

我稍微更新了一下你的表达式:

preg_match_all('/\:(.+?)(\:)/', $string, $emojis, PREG_SET_ORDER);
echo var_dump($emojis);
  • 现在被转义了,否则可以将其视为特殊字符。:

  • 替换为 ,这样您就不会连续匹配两个,但需要至少一个字符。*+::


查看完整回答
反对 回复 2022-08-05
  • 1 回答
  • 0 关注
  • 361 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号