diff --git a/src/Header/AbstractAccept.php b/src/Header/AbstractAccept.php index 7a8c379ee4..0304c7bced 100644 --- a/src/Header/AbstractAccept.php +++ b/src/Header/AbstractAccept.php @@ -170,7 +170,12 @@ protected function getParametersFromFieldValuePart($fieldValuePart) foreach ($paramsStrings as $param) { $explode = explode('=', $param, 2); - $value = trim($explode[1]); + if (count($explode) === 2) { + $value = trim($explode[1]); + } else { + $value = null; + } + if (isset($value[0]) && $value[0] == '"' && substr($value, -1) == '"') { $value = substr(substr($value, 1), 0, -1); } @@ -226,9 +231,9 @@ function ($v) { ); if ($escaped == $value && !array_intersect(str_split($value), $separators)) { - $value = $key . '=' . $value; + $value = $key . ($value ? '=' . $value : ''); } else { - $value = $key . '="' . $escaped . '"'; + $value = $key . ($value ? '="' . $escaped . '"' : ''); } return $value; diff --git a/test/Header/AcceptCharsetTest.php b/test/Header/AcceptCharsetTest.php index 2ec6c0f630..115472c01b 100644 --- a/test/Header/AcceptCharsetTest.php +++ b/test/Header/AcceptCharsetTest.php @@ -32,6 +32,18 @@ public function testAcceptCharsetGetFieldValueReturnsProperValue() $this->assertEquals('xxx', $acceptCharsetHeader->getFieldValue()); } + public function testAcceptCharsetGetFieldValueReturnsProperValueWithTrailingSemicolon() + { + $acceptCharsetHeader = AcceptCharset::fromString('Accept-Charset: xxx;'); + $this->assertEquals('xxx', $acceptCharsetHeader->getFieldValue()); + } + + public function testAcceptCharsetGetFieldValueReturnsProperValueWithSemicolonWithoutEqualSign() + { + $acceptCharsetHeader = AcceptCharset::fromString('Accept-Charset: xxx;yyy'); + $this->assertEquals('xxx;yyy', $acceptCharsetHeader->getFieldValue()); + } + public function testAcceptCharsetToStringReturnsHeaderFormattedString() { $acceptCharsetHeader = new AcceptCharset(); diff --git a/test/Header/AcceptEncodingTest.php b/test/Header/AcceptEncodingTest.php index e85fc0e593..9707dbc8d4 100644 --- a/test/Header/AcceptEncodingTest.php +++ b/test/Header/AcceptEncodingTest.php @@ -32,6 +32,18 @@ public function testAcceptEncodingGetFieldValueReturnsProperValue() $this->assertEquals('xxx', $acceptEncodingHeader->getFieldValue()); } + public function testAcceptEncodingGetFieldValueReturnsProperValueWithTrailingSemicolon() + { + $acceptEncodingHeader = AcceptEncoding::fromString('Accept-Encoding: xxx;'); + $this->assertEquals('xxx', $acceptEncodingHeader->getFieldValue()); + } + + public function testAcceptEncodingGetFieldValueReturnsProperValueWithSemicolonWithoutEqualSign() + { + $acceptEncodingHeader = AcceptEncoding::fromString('Accept-Encoding: xxx;yyy'); + $this->assertEquals('xxx;yyy', $acceptEncodingHeader->getFieldValue()); + } + public function testAcceptEncodingToStringReturnsHeaderFormattedString() { $acceptEncodingHeader = new AcceptEncoding(); diff --git a/test/Header/AcceptLanguageTest.php b/test/Header/AcceptLanguageTest.php index bc7d4eb6b2..1942ffa546 100644 --- a/test/Header/AcceptLanguageTest.php +++ b/test/Header/AcceptLanguageTest.php @@ -32,6 +32,18 @@ public function testAcceptLanguageGetFieldValueReturnsProperValue() $this->assertEquals('xxx', $acceptLanguageHeader->getFieldValue()); } + public function testAcceptLanguageGetFieldValueReturnsProperValueWithTrailingSemicolon() + { + $acceptLanguageHeader = AcceptLanguage::fromString('Accept-Language: xxx;'); + $this->assertEquals('xxx', $acceptLanguageHeader->getFieldValue()); + } + + public function testAcceptLanguageGetFieldValueReturnsProperValueWithSemicolonWithoutEqualSign() + { + $acceptLanguageHeader = AcceptLanguage::fromString('Accept-Language: xxx;yyy'); + $this->assertEquals('xxx;yyy', $acceptLanguageHeader->getFieldValue()); + } + public function testAcceptLanguageToStringReturnsHeaderFormattedString() { $acceptLanguageHeader = new AcceptLanguage();