'', 'url' => '', 'updated' => '']; $desc = htmlspecialchars($vibe['description'] ?? '', ENT_QUOTES, 'UTF-8'); $url = $vibe['url'] ?? ''; $updated = htmlspecialchars($vibe['updated'] ?? '', ENT_QUOTES, 'UTF-8'); $safe = htmlspecialchars($url, ENT_QUOTES, 'UTF-8'); function vibe_page_type(string $u): string { if (empty($u)) return 'none'; $p = strtolower(parse_url($u, PHP_URL_PATH) ?? ''); $ext = pathinfo($p, PATHINFO_EXTENSION); if (in_array($ext, ['jpg','jpeg','png','gif','webp','bmp','svg','avif'])) return 'image'; if (in_array($ext, ['mp4','webm','ogv','mov'])) return 'video'; if (in_array($ext, ['mp3','flac','wav','ogg','aac','opus','m4a'])) return 'audio'; if (preg_match('/(?:youtube\.com\/watch\?.*v=|youtu\.be\/)([A-Za-z0-9_-]{11})/', $u, $m)) return 'youtube:' . $m[1]; if (preg_match('/vimeo\.com\/(\d+)/', $u, $m)) return 'vimeo:' . $m[1]; return 'link'; } $type = vibe_page_type($url); ?>