X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;f=banana%2Fmimepart.inc.php;h=1ca1ec82586939dc81966fa74ee37f2dc2fc88a1;hb=19fc7e1dd2cbe55e92aa4730b61ffc150cbf1f7c;hp=cf1e94ab12fbe6f97d5e2cf1533a413aa1b78e15;hpb=0372bd0ab06097be8baa617e3310f305f341b782;p=banana.git diff --git a/banana/mimepart.inc.php b/banana/mimepart.inc.php index cf1e94a..1ca1ec8 100644 --- a/banana/mimepart.inc.php +++ b/banana/mimepart.inc.php @@ -160,14 +160,14 @@ class BananaMimePart $encoding = '8bit'; $charset = 'CP1252'; $content_type = 'text/plain'; - $format = strtolower($this->getHeader('x-rfc2646', '/format="?([^"]+?)"?\s*(;|$)/i')); + $format = strtolower($this->getHeader('x-rfc2646', '/format="?([^ w@"]+?)"?\s*(;|$)/i')); } else { $encoding = strtolower($this->getHeader('content-transfer-encoding')); $disposition = $this->getHeader('content-disposition', '/(inline|attachment)/i'); - $boundary = $this->getHeader('content-type', '/boundary="?([^"]+?)"?\s*(;|$)/i'); - $charset = strtolower($this->getHeader('content-type', '/charset="?([^"]+?)"?\s*(;|$)/i')); - $filename = $this->getHeader('content-disposition', '/filename="?([^"]+?)"?\s*(;|$)/i'); - $format = strtolower($this->getHeader('content-type', '/format="?([^"]+?)"?\s*(;|$)/i')); + $boundary = $this->getHeader('content-type', '/boundary="?([^ "]+?)"?\s*(;|$)/i'); + $charset = strtolower($this->getHeader('content-type', '/charset="?([^ "]+?)"?\s*(;|$)/i')); + $filename = $this->getHeader('content-disposition', '/filename="?([^ "]+?)"?\s*(;|$)/i'); + $format = strtolower($this->getHeader('content-type', '/format="?([^ "]+?)"?\s*(;|$)/i')); $id = $this->getHeader('content-id', '/<(.*?)>/'); if (empty($filename)) { $filename = $this->getHeader('content-type', '/name="?([^"]+)"?/'); @@ -269,16 +269,16 @@ class BananaMimePart static public function &parseHeaders(array &$lines) { $headers = array(); - while (count($lines)) { + while ($lines) { $line = array_shift($lines); - if (preg_match('/^[\t\r ]+/', $line) && isset($hdr)) { + if (isset($hdr) && $line && ctype_space($line{0})) { $headers[$hdr] .= ' ' . trim($line); } elseif (!empty($line)) { - if (preg_match("/:[ \t\r]*/", $line)) { - list($hdr, $val) = split(":[ \t\r]*", $line, 2); + if (strpos($line, ':') !== false) { + list($hdr, $val) = explode(":", $line, 2); $hdr = strtolower($hdr); if (in_array($hdr, Banana::$msgparse_headers)) { - $headers[$hdr] = $val; + $headers[$hdr] = ltrim($val); } else { unset($hdr); } @@ -448,8 +448,8 @@ class BananaMimePart case 'html': return banana_formatHtml($this); case 'enriched': case 'richtext': return banana_formatRichText($this); default: - if ($type == 'message') { - return '
' . banana_formatPlainText($this); + if ($type == 'message') { // we have a raw source of data (no specific pre-formatting) + return '
' . utf8_encode(banana_formatPlainText($this)); } return banana_formatPlainText($this); }