donatj/phpuseragentparser
Lightweight PHP user-agent parser for detecting modern browsers and platforms from UA strings. Tiny codebase (<200 lines, 3 regexes), fast and accurate (including tricky IE versions). Composer-ready, 100% unit-tested, with optional object wrapper.
Adds / Improves support for bots.
Formal support for many many bots including Claude and Perplexity among many others.
Adds a new Bots helper class you can use for identifying specific bots.
Full Changelog: https://github.com/donatj/PhpUserAgent/compare/v1.11.0...v1.12.0
Full Changelog: https://github.com/donatj/PhpUserAgent/compare/v1.10.0...v1.11.0
Full Changelog: https://github.com/donatj/PhpUserAgent/compare/v1.9.0...v1.10.0
Full Changelog: https://github.com/donatj/PhpUserAgent/compare/v1.8.0...v1.9.0
See 1.8.0 for changelog
Full Changelog: https://github.com/donatj/PhpUserAgent/compare/v0.22.0...v0.23.0
Full Changelog: https://github.com/donatj/PhpUserAgent/compare/v1.7.0...v1.8.0
Full Changelog: https://github.com/donatj/PhpUserAgent/compare/v1.6.1...v1.7.0
https://github.com/donatj/PhpUserAgent/releases/tag/v1.6.1
Full Changelog: https://github.com/donatj/PhpUserAgent/compare/v0.21.0...v0.21.1
Full Changelog: https://github.com/donatj/PhpUserAgent/compare/v1.6.0...v1.6.1
https://github.com/donatj/PhpUserAgent/releases/tag/v1.6.0
Full Changelog: https://github.com/donatj/PhpUserAgent/compare/v0.20.0...v0.21.0
Full Changelog: https://github.com/donatj/PhpUserAgent/compare/v1.5.0...v1.6.0
Adds official support for TelegramBot and Twitterbot.
They were already detected but did not have tests.
Adds sniffing and support for iMessageBot.
This is a deprecated release for compatibility.
The functionality of this release is mirrored exactly by v1.3.0 and does not break compatibility. You can easily upgrade.
Please upgrade ASAP.
Adds official support for TelegramBot and Twitterbot.
They were already detected but did not have constants nor tests.
Adds sniffing and support for iMessageBot.
Adds:
This is a deprecated release for compatibility.
The functionality of this release is mirrored exactly by v1.3.0 and does not break compatibility. The 0.x releases will soon no longer be maintained. Please upgrade ASAP.
Adds:
Adr rather than Android - handle this weirdness.Adr rather than Android - handle this weirdness.This is a deprecated release for compatibility.
The functionality of this release is mirrored exactly by v1.2.0 and does not break compatibility. The 0.x releases will soon no longer be maintained. Please upgrade ASAP.
Adds support for the Applebot - http://www.apple.com/go/applebot
The functionality of this release is mirrored by v1.1.0 and does not break backwards compatibility. The 0.x releases will soon no longer be maintained.
Adds support for the Applebot - http://www.apple.com/go/applebot
This is a major rework of the entire project that took just under 2 years. The utmost care went into considering how to keep this both the small and light library the community enjoys, but also add features people have been clamoring for since the beginning. I really believe we've hit the nail on the head here.
A lot of work went into not breaking compatibility especially for people not using composer. If you encounter any issues with compatibility let us know and we will fix it ASAP.
All required "functional" logic remains in a single file src/UserAgentParser.php This is specifically to make the library easy to use for people who do not use composer.
\donatj\UserAgent\UserAgentParser - Object oriented parse_user_agent call wrapper.\donatj\UserAgent\UserAgent - Object oriented response object.\donatj\UserAgent\UserAgentInterface - Helper interface for test mocking.\donatj\UserAgent\parse_user_agent function to mirror global parse_user_agent\donatj\UserAgent\PLATFORM = 'platform';\donatj\UserAgent\BROWSER = 'browser';\donatj\UserAgent\BROWSER_VERSION = 'version';\donatj\UserAgent\Browsers::*\donatj\UserAgent\Platforms::*parse_user_agent is deprecated in favor of \donatj\UserAgent\parse_user_agent
Thus require "{$dir}/src/UserAgentParser.php"; remains a supported method of using the library.
1.*The new 1.* release does not break compatibility with 0.* and nothing need to change to upgrade. However, the global parse_user_agent is now deprecated; it has been replaced with the namespaced \donatj\UserAgent\parse_user_agent and functions exactly the same. You can easily replace any existing call to parse_user_agent with \donatj\UserAgent\parse_user_agent
In addition, 1.x adds a convenience object wrapper you may use should you prefer. More information on this is in the Usage section of the README.
I would also like to personally thank @mimmi20 for helping review ideas early in the project's life cycle.
Fixes:
Updates:
Drops support for Opera Next - it's not really a thing anymore and supporting it was interfering with proper detection of Opera propper.
Adds basic support for Microsoft's new Blink based Edge browser. Slight improvements to PS4 support.
I made a number of seemingly minor changes to the regular expressions that when benchmarked resulted in a nearly 3% performance improvement.
| Old Path | New Path |
|---|---|
| Source/ | src/ |
| Tools/ | bin/ |
| Tests/ | test/ |
Warning: if you are directly requiring the PHP file rather than using composer this will be a breaking change.
Adds basic support and tests for OculusBrowser
Adds support for Yandex.
v0.11.0 was deleted.
A cherry pick from an upstream branch went awry as it made use of a constant not currently defined.
This hotfix removes said constant.
Now differentiates between HeadlessChrome and Chrome.
Adds Nintendo Switch browser support.
It was pointed out that a number of BSD based OS's showed up as "Linux" which isn't accurate/correct.
This has been corrected with the help of @goshoo
How can I help you explore Laravel packages today?