public function testAcceptHeaderFromString() { $item = AcceptHeaderItem::fromString('text/html;q=0.5;version=1;charset="utf-8,ISO-8859-1"'); $this->assertEquals('text/html', $item->getValue()); $this->assertEquals('1', $item->getParameter('version')); $this->assertEquals('utf-8,ISO-8859-1', $item->getParameter('charset')); }
/** * Factory create AcceptHeader from string representation. * * @param string $headerLine * * @return $this * * @throws InvalidArgumentException */ public static function fromString($headerLine) { $headerLine = (string) $headerLine; $pos = strpos($headerLine, ':'); $fieldName = substr($headerLine, 0, $pos); $header = new static(); $items = array(); if ($fieldName !== $header->getFieldName()) { throw new InvalidArgumentException(sprintf('Header "%s" can\'t parse value "%s".', $header->getFieldName(), $fieldName)); } preg_match_all('#((("[^"\']++")|(\'[^"\']++\'))|[^,"\'])+#', trim(substr($headerLine, $pos + 1)), $items); foreach (array_map('trim', $items[0]) as $index => $itemValueString) { $item = AcceptHeaderItem::fromString($itemValueString); $item->setIndex($index); $header->add($item); } return $header; }