我使用 SplPriorityQueue 来确定 HTTP 客户端的首选 MIME 类型。
<?php
$queue = new \SplPriorityQueue();
foreach (preg_split('#,\s*#', $_SERVER['HTTP_ACCEPT']) as $accept) {
$split = preg_split('#;\s*q=#', $accept, 2);
$queue->insert($split[0], isset($split[1]) ? (float)$split[1] : 1.0);
}
foreach ($queue as $mime) {
echo $mime, PHP_EOL;
}
?>
我的浏览器发送
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
此脚本输出
text/html
application/xhtml+xml
application/xml
*/*
更好的例子
Accept: text/html, application/xml,text/css;q=0.4,text/plain; q=0.9, application/json;q=0.8
此脚本输出
text/html
application/xml
text/plain
application/json
text/css