/** * Returns the quality of the supplied `$charset` argument. This method * will automatically parse the `Accept-Charset` header if present and * return the associated resolved quality value. * * // Accept-Charset: utf-8, utf-16; q=.8, iso-8859-1; q=.5 * $quality = $header->accepts_charset_at_quality('utf-8'); * // $quality = (float) 1 * * @param string $charset charset to examine * @return float the quality of the charset * @since 3.2.0 */ public function accepts_charset_at_quality($charset) { if ($this->_accept_charset === NULL) { if ($this->offsetExists('Accept-Charset')) { $charset_header = strtolower($this->offsetGet('Accept-Charset')); $this->_accept_charset = HTTP_Header::parse_charset_header($charset_header); } else { $this->_accept_charset = HTTP_Header::parse_charset_header(NULL); } } $charset = strtolower($charset); if (isset($this->_accept_charset[$charset])) { return $this->_accept_charset[$charset]; } elseif (isset($this->_accept_charset['*'])) { return $this->_accept_charset['*']; } elseif ($charset === 'iso-8859-1') { return (double) 1; } return (double) 0; }
/** * Tests the `parse_charset_header` method parsed the Accept-Charset header * correctly * * @dataProvider provider_parse_charset_header * * @param string $accept accept * @param array $expected expected * @return void */ public function test_parse_charset_header($accept, array $expected) { $this->assertSame($expected, HTTP_Header::parse_charset_header($accept)); }