diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php
index 1dffb0507..167a05397 100644
--- a/src/Content/Text/BBCode.php
+++ b/src/Content/Text/BBCode.php
@@ -1680,7 +1680,7 @@ class BBCode extends BaseObject
$text = str_replace(["\r","\n"], ['
', '
'], $text);
// Remove all hashtag addresses
- if ((!$try_oembed || $simple_html) && !in_array($simple_html, [3, 7, 9])) {
+ if ($simple_html && !in_array($simple_html, [3, 7, 9])) {
$text = preg_replace("/([#@!])\[url\=(.*?)\](.*?)\[\/url\]/ism", '$1$3', $text);
} elseif ($simple_html == 3) {
// The ! is converted to @ since Diaspora only understands the @
diff --git a/src/Protocol/ActivityPub/Transmitter.php b/src/Protocol/ActivityPub/Transmitter.php
index 82ee97c9e..545ac22c6 100644
--- a/src/Protocol/ActivityPub/Transmitter.php
+++ b/src/Protocol/ActivityPub/Transmitter.php
@@ -1270,7 +1270,10 @@ class Transmitter
$data['content'] = BBCode::convert($body, false, 9);
}
- $data['contentMap']['text/html'] = BBCode::convert($item['body'], false);
+ $regexp = "/[@!]\[url\=([^\[\]]*)\].*?\[\/url\]/ism";
+ $richbody = preg_replace_callback($regexp, ['self', 'mentionCallback'], $item['body']);
+
+ $data['contentMap']['text/html'] = BBCode::convert($richbody, false);
$data['contentMap']['text/markdown'] = BBCode::toMarkdown($item["body"]);
$data['source'] = ['content' => $item['body'], 'mediaType' => "text/bbcode"];