diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php index 65abb5d5d..0ea11c6ad 100644 --- a/src/Protocol/ActivityPub/Transmitter.php +++ b/src/Protocol/ActivityPub/Transmitter.php @@ -1477,28 +1477,28 @@ class Transmitter */ private static function removePictures(string $body): string { - // Simplify image codes - $body = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $body); - $body = preg_replace("/\[img\=(.*?)\](.*?)\[\/img\]/ism", '[img]$1[/img]', $body); + return BBCode::performWithEscapedTags($body, ['code', 'noparse', 'nobb', 'pre'], function ($text) { + // Simplify image codes + $text = preg_replace("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", '[img]$3[/img]', $text); + $text = preg_replace("/\[img\=(.*?)\](.*?)\[\/img\]/ism", '[img]$1[/img]', $text); - // Now remove local links - $body = preg_replace_callback( - '/\[url=([^\[\]]*)\]\[img\](.*)\[\/img\]\[\/url\]/Usi', - function ($match) { - // We remove the link when it is a link to a local photo page - if (Photo::isLocalPage($match[1])) { - return ''; - } - // otherwise we just return the link - return '[url]' . $match[1] . '[/url]'; - }, - $body - ); + // Now remove local links + $text = preg_replace_callback( + '/\[url=([^\[\]]*)\]\[img\](.*)\[\/img\]\[\/url\]/Usi', + function ($match) { + // We remove the link when it is a link to a local photo page + if (Photo::isLocalPage($match[1])) { + return ''; + } + // otherwise we just return the link + return '[url]' . $match[1] . '[/url]'; + }, + $text + ); - // Remove all pictures - $body = preg_replace("/\[img\]([^\[\]]*)\[\/img\]/Usi", '', $body); - - return $body; + // Remove all pictures + return preg_replace("/\[img\]([^\[\]]*)\[\/img\]/Usi", '', $text); + }); } /**