Source of file GenericHeader.php
Size: 4,075 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/Mail/Header/GenericHeader.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 | <?php /** * Zend Framework (http://framework.zend.com/) * * @link http://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ namespace Zend\Mail\Header; class GenericHeader implements HeaderInterface, UnstructuredInterface { /** * @var string */ protected $fieldName = null; /** * @var string */ protected $fieldValue = null; /** * Header encoding * * @var string */ protected $encoding = 'ASCII'; public static function fromString($headerLine) { $decodedLine = iconv_mime_decode($headerLine, ICONV_MIME_DECODE_CONTINUE_ON_ERROR, 'UTF-8'); list($name, $value) = GenericHeader::splitHeaderLine($decodedLine); $header = new static($name, $value); if ($decodedLine != $headerLine) { $header->setEncoding('UTF-8'); } return $header; } /** * Splits the header line in `name` and `value` parts. * * @param string $headerLine * @return string[] `name` in the first index and `value` in the second. * @throws Exception\InvalidArgumentException If header does not match with the format ``name:value`` */ public static function splitHeaderLine($headerLine) { $parts = explode(':', $headerLine, 2); if (count($parts) !== 2) { throw new Exception\InvalidArgumentException('Header must match with the format "name:value"'); } $parts[1] = ltrim($parts[1]); return $parts; } /** * Constructor * * @param string $fieldName Optional * @param string $fieldValue Optional */ public function __construct($fieldName = null, $fieldValue = null) { if ($fieldName) { $this->setFieldName($fieldName); } if ($fieldValue) { $this->setFieldValue($fieldValue); } } /** * Set header name * * @param string $fieldName * @throws Exception\InvalidArgumentException * @return GenericHeader */ public function setFieldName($fieldName) { if (!is_string($fieldName) || empty($fieldName)) { throw new Exception\InvalidArgumentException('Header name must be a string'); } // Pre-filter to normalize valid characters, change underscore to dash $fieldName = str_replace(' ', '-', ucwords(str_replace(array('_', '-'), ' ', $fieldName))); // Validate what we have if (!preg_match('/^[\x21-\x39\x3B-\x7E]*$/', $fieldName)) { throw new Exception\InvalidArgumentException( 'Header name must be composed of printable US-ASCII characters, except colon.' ); } $this->fieldName = $fieldName; return $this; } public function getFieldName() { return $this->fieldName; } /** * Set header value * * @param string $fieldValue * @return GenericHeader */ public function setFieldValue($fieldValue) { $fieldValue = (string) $fieldValue; if (empty($fieldValue) || preg_match('/^\s+$/', $fieldValue)) { $fieldValue = ''; } $this->fieldValue = $fieldValue; return $this; } public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { if (HeaderInterface::FORMAT_ENCODED === $format) { return HeaderWrap::wrap($this->fieldValue, $this); } return $this->fieldValue; } public function setEncoding($encoding) { $this->encoding = $encoding; return $this; } public function getEncoding() { return $this->encoding; } public function toString() { $name = $this->getFieldName(); $value = $this->getFieldValue(HeaderInterface::FORMAT_ENCODED); return $name . ': ' . $value; } } |