setType($type); if (count($values)) { foreach ($values as $keyValuePair) { list($key, $value) = explode('=', $keyValuePair, 2); $value = trim($value, "'\" \t\n\r\0\x0B"); $header->addParameter($key, $value); } } return $header; } public function getFieldName() { return 'Content-Type'; } public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { $prepared = $this->type; if (empty($this->parameters)) { return $prepared; } $values = array($prepared); foreach ($this->parameters as $attribute => $value) { $values[] = sprintf('%s="%s"', $attribute, $value); } return implode(';' . Headers::FOLDING, $values); } public function setEncoding($encoding) { // This header must be always in US-ASCII return $this; } public function getEncoding() { return 'ASCII'; } public function toString() { return 'Content-Type: ' . $this->getFieldValue(); } /** * Set the content type * * @param string $type * @throws Exception\InvalidArgumentException * @return ContentType */ public function setType($type) { if (!preg_match('/^[a-z-]+\/[a-z0-9.+-]+$/i', $type)) { throw new Exception\InvalidArgumentException(sprintf( '%s expects a value in the format "type/subtype"; received "%s"', __METHOD__, (string) $type )); } $this->type = $type; return $this; } /** * Retrieve the content type * * @return string */ public function getType() { return $this->type; } /** * Add a parameter pair * * @param string $name * @param string $value * @return ContentType */ public function addParameter($name, $value) { $name = strtolower($name); $this->parameters[$name] = (string) $value; return $this; } /** * Get all parameters * * @return array */ public function getParameters() { return $this->parameters; } /** * Get a parameter by name * * @param string $name * @return null|string */ public function getParameter($name) { $name = strtolower($name); if (isset($this->parameters[$name])) { return $this->parameters[$name]; } return null; } /** * Remove a named parameter * * @param string $name * @return bool */ public function removeParameter($name) { $name = strtolower($name); if (isset($this->parameters[$name])) { unset($this->parameters[$name]); return true; } return false; } }