我的目標是檢查消息是否有表情符號,如果是,我將轉換它們。我很難找出字符串中有多少個表情符號。例子 :$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 回答

素胚勾勒不出你
TA貢獻1827條經驗 獲得超9個贊
我稍微更新了你的表情:
preg_match_all('/\:(.+?)(\:)/', $string, $emojis, PREG_SET_ORDER);
echo var_dump($emojis);
現在:已轉義,否則可以將其視為特殊字符。
替換了*by +,這樣你就不會連續匹配兩個::,但至少需要一個字符。
- 1 回答
- 0 關注
- 286 瀏覽
添加回答
舉報
0/150
提交
取消