See Reference : RFC 7231
composer require proteins/negotiation
Require the class via :
use Proteins\Negotiation;
Note: You can use
*
as wildcards for matching a family of choices.
$need = 'image/*;q=0.9,*/*;q=0.2';
$offer = 'text/html,svg/xml,image/svg+xml';
echo Negotiation::bestMatch($need,$offer);
image/svg+xml
Negotiation class automatically orders by priority based on q
parameter.
$negotiatior = new Negotiation('en-US;q=0.3,it,en;q=0.4,es;q=0.9,de');
You can obtain the preferred response via the preferred
method.
echo $negotiatior->preferred();
it
Or get the best match against another RFC7231 query
echo $negotiatior->best('es,en-US');
es
false
will be returned if no match can be found.