From e888d795f277916ec62c2e812b9a10a9614682e8 Mon Sep 17 00:00:00 2001 From: Hans Lemuet Date: Tue, 24 Mar 2020 14:17:28 +0100 Subject: [PATCH 1/2] Change FR regex to accept nbsp before `:` In some cases, the space before `:` is an non-breaking space. By using `\s` we support this case. --- src/EmailReplyParser/Parser/EmailParser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EmailReplyParser/Parser/EmailParser.php b/src/EmailReplyParser/Parser/EmailParser.php index d3d16e3..e9ed719 100644 --- a/src/EmailReplyParser/Parser/EmailParser.php +++ b/src/EmailReplyParser/Parser/EmailParser.php @@ -32,7 +32,7 @@ class EmailParser */ private $quoteHeadersRegex = array( '/^\s*(On(?:(?!^>*\s*On\b|\bwrote:).){0,1000}wrote:)$/ms', // On DATE, NAME wrote: - '/^\s*(Le(?:(?!^>*\s*Le\b|\bécrit:).){0,1000}écrit :)$/ms', // Le DATE, NAME a écrit : + '/^\s*(Le(?:(?!^>*\s*Le\b|\bécrit:).){0,1000}écrit\s:)$/ms', // Le DATE, NAME a écrit : '/^\s*(El(?:(?!^>*\s*El\b|\bescribió:).){0,1000}escribió:)$/ms', // El DATE, NAME escribió: '/^\s*(Il(?:(?!^>*\s*Il\b|\bscritto:).){0,1000}scritto:)$/ms', // Il DATE, NAME ha scritto: '/^[\S\s]+ (написа(л|ла|в)+)+:$/msu', // Everything before написал: not ending on wrote: From b71d9983c07b0455cb5b9727b90642a32bc11ae0 Mon Sep 17 00:00:00 2001 From: Hans Lemuet Date: Tue, 24 Mar 2020 15:50:25 +0100 Subject: [PATCH 2/2] Fix regex for nbsp See https://www.php.net/manual/fr/regexp.reference.escape.php#124071 --- src/EmailReplyParser/Parser/EmailParser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/EmailReplyParser/Parser/EmailParser.php b/src/EmailReplyParser/Parser/EmailParser.php index e9ed719..ec47ff0 100644 --- a/src/EmailReplyParser/Parser/EmailParser.php +++ b/src/EmailReplyParser/Parser/EmailParser.php @@ -32,7 +32,7 @@ class EmailParser */ private $quoteHeadersRegex = array( '/^\s*(On(?:(?!^>*\s*On\b|\bwrote:).){0,1000}wrote:)$/ms', // On DATE, NAME wrote: - '/^\s*(Le(?:(?!^>*\s*Le\b|\bécrit:).){0,1000}écrit\s:)$/ms', // Le DATE, NAME a écrit : + '/^\s*(Le(?:(?!^>*\s*Le\b|\bécrit:).){0,1000}écrit(\s|\xc2\xa0):)$/ms', // Le DATE, NAME a écrit : '/^\s*(El(?:(?!^>*\s*El\b|\bescribió:).){0,1000}escribió:)$/ms', // El DATE, NAME escribió: '/^\s*(Il(?:(?!^>*\s*Il\b|\bscritto:).){0,1000}scritto:)$/ms', // Il DATE, NAME ha scritto: '/^[\S\s]+ (написа(л|ла|в)+)+:$/msu', // Everything before написал: not ending on wrote: