diff --git a/src/Content/Text/HTML.php b/src/Content/Text/HTML.php
index 209b12eec4..f3be678f9d 100644
--- a/src/Content/Text/HTML.php
+++ b/src/Content/Text/HTML.php
@@ -253,8 +253,10 @@ class HTML
self::tagToBBCode($doc, 'span', ['class' => 'type-link'], '[class=type-link]', '[/class]');
self::tagToBBCode($doc, 'span', ['class' => 'type-video'], '[class=type-video]', '[/class]');
- $elements = ['b', 'del', 'em', 'i', 'ins', 'kbd', 'mark',
- 's', 'samp', 'strong', 'sub', 'sup', 'u', 'var'];
+ $elements = [
+ 'b', 'del', 'em', 'i', 'ins', 'kbd', 'mark',
+ 's', 'samp', 'strong', 'sub', 'sup', 'u', 'var'
+ ];
foreach ($elements as $element) {
self::tagToBBCode($doc, $element, [], '[' . $element . ']', '[/' . $element . ']');
}
@@ -1059,4 +1061,15 @@ class HTML
return null;
}
+
+ /**
+ * Check if a document contains HTML or entities
+ *
+ * @param string $text
+ * @return boolean
+ */
+ public static function isHTML(string $text): bool
+ {
+ return ($text != html_entity_decode($text)) || ($text != strip_tags($text));
+ }
}
diff --git a/src/Protocol/Feed.php b/src/Protocol/Feed.php
index 4b5342d0a1..f1b8d26ca6 100644
--- a/src/Protocol/Feed.php
+++ b/src/Protocol/Feed.php
@@ -29,7 +29,6 @@ use Friendica\Contact\LocalRelationship\Entity\LocalRelationship;
use Friendica\Content\PageInfo;
use Friendica\Content\Text\BBCode;
use Friendica\Content\Text\HTML;
-use Friendica\Core\Cache\Enum\Duration;
use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\Worker;
@@ -546,6 +545,13 @@ class Feed
if (self::titleIsBody($item['title'], $body)) {
$item['title'] = '';
}
+
+ if (!HTML::isHTML($body)) {
+ $original = $body;
+ $body = BBCode::convert($body, false, BBCode::EXTERNAL);
+ Logger::debug('Body contained no HTML', ['original' => $original, 'converted' => $body]);
+ }
+
$item['body'] = HTML::toBBCode($body, $basepath);
// Remove tracking pixels