一直在尋找一種方法來解析像private, max-age=86400
字符串轉換成一個這樣的數組:解析Cache-Control頭在PHP
[private] => TRUE
[max-age] => 86400
一直在尋找一種方法來解析像private, max-age=86400
字符串轉換成一個這樣的數組:解析Cache-Control頭在PHP
[private] => TRUE
[max-age] => 86400
/**
* Parse the cache-control string into a key value array.
*
* @param string $cache_control
* The cache-control string.
*
* @return array
* Returns a key value array.
*/
function parse_cache_control($cache_control) {
$cache_control_array = explode(',', $cache_control);
$cache_control_array = array_map('trim', $cache_control_array);
$cache_control_parsed = array();
foreach ($cache_control_array as $value) {
if (strpos($value, '=') !== FALSE) {
$temp = array();
parse_str($value, $temp);
$cache_control_parsed += $temp;
}
else {
$cache_control_parsed[$value] = TRUE;
}
}
return $cache_control_parsed;
}
'cache-control'允許使用帶引號的字符串(https://tools.ietf.org/html/rfc7234#section-5.2),因此在''上分割將不起作用。 – Joe
@Joe你有一個引用字符串的例子嗎?在RFC中它不是很清楚它的樣子。 – mikeytown2
這是一個利基案例,並且 [考慮刪除](https://www.ietf.org/mail-archive/web/httpbisa/current/msg08290.html), 但是「Cache-Control:private =」set -cookie,last-modified「'是有效的。更一般地說,[任何擴展](https://tools.ietf.org/html/rfc7234#section-5.2.3)都可以使用它(規範中的'community =「UCI」'是一個示例,儘管 不是病理性的)。 – Joe
請發表評論,爲什麼這是一個糟糕的問題。解析緩存控制標題似乎是一個有效的問題。根據評論我目前的答案是不正確的,因此沒有被接受。 – mikeytown2