feat: enrichir l'édition du site public

This commit is contained in:
Alexandre NOEL 2026-09-07 15:52:16 +02:00
commit 1df26401a3
17 changed files with 115 additions and 15 deletions

View file

@ -46,6 +46,14 @@ final class PublicContentFormatter
private static function inline(string $text): string
{
$images = [];
$text = preg_replace_callback('/!\[([^\]]*)\]\((\/media\/site\/[A-Za-z0-9._%-]+)\)/u', static function (array $match) use (&$images): string {
$token = "\x1B" . count($images) . "\x1B";
$images[] = '<img class="public-content-image" src="' .
htmlspecialchars($match[2], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') . '" alt="' .
htmlspecialchars($match[1], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') . '" loading="lazy">';
return $token;
}, $text) ?? $text;
$links = [];
$text = preg_replace_callback('/\[([^\]]+)\]\((https:\/\/[^\s)]+)\)/u', static function (array $match) use (&$links): string {
if (!filter_var($match[2], FILTER_VALIDATE_URL)) {
@ -62,6 +70,9 @@ final class PublicContentFormatter
foreach ($links as $index => $link) {
$text = str_replace("\x1A" . $index . "\x1A", $link, $text);
}
foreach ($images as $index => $image) {
$text = str_replace("\x1B" . $index . "\x1B", $image, $text);
}
return $text;
}
}