}> $readers */ $readers = config('feeds.readers', []); foreach ($readers as $key => $reader) { foreach ($reader['patterns'] as $pattern) { if (stripos($userAgent, $pattern) !== false) { return $key; } } } return null; } /** * Abonnentenzahl, wie Feedly, Inoreader, NewsBlur, Feedbin & Co. sie im * User-Agent nennen („12 subscribers"). Null, wenn nichts angegeben ist. */ public static function subscribers(?string $userAgent): ?int { if ($userAgent === null || preg_match('/(\d{1,7})\s+subscribers?/i', $userAgent, $match) !== 1) { return null; } return (int) $match[1]; } public static function label(?string $reader): string { if ($reader === null) { return __('Sonstige'); } return (string) (config('feeds.readers.'.$reader.'.label') ?? $reader); } }