$list) { foreach ($list as $i => $item) { if (preg_match($item['regexp'], $ua, $match)) { return [ 'browser' => [ 'name' => $item['name'], 'hidden' => isset($item['hidden']) ? $item['hidden'] : false, 'stock' => false, 'channel' => '', 'type' => $type, 'version' => isset($match[1]) && $match[1] ? new Version([ 'value' => $match[1], 'details' => isset($item['details']) ? $item['details'] : null ]) : null ], 'device' => isset($item['type']) ? [ 'type' => $item['type'] ] : null ]; } } } } } public static function identifyOther($ua) { require_once __DIR__ . '/../../data/regexes/applications-others.php'; if (preg_match(self::$OTHERS_REGEX, $ua)) { require_once __DIR__ . '/../../data/applications-others.php'; foreach (self::$OTHERS as $type => $list) { foreach ($list as $i => $item) { if (preg_match($item['regexp'], $ua, $match)) { return [ 'browser' => [ 'name' => $item['name'], 'hidden' => isset($item['hidden']) ? $item['hidden'] : false, 'stock' => false, 'channel' => '', 'type' => $type, 'version' => isset($match[1]) && $match[1] ? new Version([ 'value' => $match[1], 'details' => isset($item['details']) ? $item['details'] : null ]) : null ], 'device' => isset($item['type']) ? [ 'type' => $item['type'] ] : null ]; } } } } } public static function identifyBot($ua) { require_once __DIR__ . '/../../data/regexes/applications-bots.php'; if (preg_match(self::$BOTS_REGEX, $ua)) { require_once __DIR__ . '/../../data/applications-bots.php'; foreach (self::$BOTS as $i => $item) { if (preg_match($item['regexp'], $ua, $match)) { return new Browser([ 'name' => $item['name'], 'stock' => false, 'version' => isset($match[1]) && $match[1] ? new Version([ 'value' => $match[1], 'details' => isset($item['details']) ? $item['details'] : null ]) : null ]); } } } } }