From a8f16788f4c765634eef44b4bccb355827e11db1 Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Wed, 11 Nov 2020 18:28:26 -0500 Subject: [PATCH] Prevent multiple replacements for the same emoji in Protocol\ActivityPub\Processor::replaceEmojis --- src/Protocol/ActivityPub/Processor.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Protocol/ActivityPub/Processor.php b/src/Protocol/ActivityPub/Processor.php index ebaa72db5f..8f89b17f80 100644 --- a/src/Protocol/ActivityPub/Processor.php +++ b/src/Protocol/ActivityPub/Processor.php @@ -75,10 +75,15 @@ class Processor */ private static function replaceEmojis($body, array $emojis) { - foreach ($emojis as $emoji) { - $replace = '[class=emoji mastodon][img=' . $emoji['href'] . ']' . $emoji['name'] . '[/img][/class]'; - $body = str_replace($emoji['name'], $replace, $body); - } + $body = strtr($body, + array_combine( + array_column($emojis, 'name'), + array_map(function ($emoji) { + return '[class=emoji mastodon][img=' . $emoji['href'] . ']' . $emoji['name'] . '[/img][/class]'; + }, $emojis) + ) + ); + return $body; }