From 850b50e30001f6d7e072670e10e1c6c09e654606 Mon Sep 17 00:00:00 2001 From: mhoffmann Date: Wed, 20 Nov 2013 13:01:54 +0900 Subject: [PATCH] fix for multiple of the same headers and getter for rawFields --- PlancakeEmailParser.php | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/PlancakeEmailParser.php b/PlancakeEmailParser.php index 59e6cee..699a713 100644 --- a/PlancakeEmailParser.php +++ b/PlancakeEmailParser.php @@ -102,18 +102,35 @@ private function extractHeadersAndRawBody() preg_match('/([^:]+): ?(.*)$/', $line, $matches); $newHeader = strtolower($matches[1]); $value = $matches[2]; - $this->rawFields[$newHeader] = $value; + if (is_array($this->rawFields[$newHeader])) + $this->rawFields[$newHeader][] = $value; + else if (isset($this->rawFields[$newHeader])) + $this->rawFields[$newHeader] = array($this->rawFields[$newHeader], $value); + else + $this->rawFields[$newHeader] = $value; $currentHeader = $newHeader; } else // more lines related to the current header { if ($currentHeader) { // to prevent notice from empty lines - $this->rawFields[$currentHeader] .= substr($line, 1); + if (is_array($this->rawFields[$currentHeader])) { + $this->rawFields[$currentHeader][count($this->rawFields[$currentHeader]) - 1] .= substr($line, 1); + } else { + $this->rawFields[$currentHeader] .= substr($line, 1); + } } } $i++; } } + + /** + * @return array the parsed headers as associative array + */ + public function getHeaders() + { + return $this->rawFields; + } /** *