Séparation de la signature du corps pour les messages html pas trop complexe.
authorx2003bruneau <x2003bruneau@9869982d-c50d-0410-be91-f2a2ec7c7c7b>
Tue, 28 Feb 2006 12:29:38 +0000 (12:29 +0000)
committerx2003bruneau <x2003bruneau@9869982d-c50d-0410-be91-f2a2ec7c7c7b>
Tue, 28 Feb 2006 12:29:38 +0000 (12:29 +0000)
Devrait fonctionner correctement pour des cas de la forme :
<br>-- <br>
<p>-- </p>
</p>-- <p>
<br>-- <p>
</p>-- <br>

git-svn-id: svn+ssh://murphy/home/svn/banana/trunk@7 9869982d-c50d-0410-be91-f2a2ec7c7c7b

banana/misc.inc.php

index d90ba56..410ec7e 100644 (file)
@@ -267,14 +267,23 @@ function formatbody($_text, $format='plain')
     $res  = preg_replace("/ (&lt;|&gt;|&quot;) /", "\\1", $res);
 
     if ($format == 'html') {
-        return $res;
+        $res = preg_replace("@(</p>)\n?-- \n?(<p[^>]*>|<br>)@", "\\1<br>-- \\2", $res);
+        $res = preg_replace("@<br>\n?-- \n?(<p[^>]*>)@", "<br>-- <br>\\2", $res);
+        $parts = preg_split("@(:?<p[^>]*>\n?-- \n?</p>|<br[^>]*>\n?-- \n?<br>)@", $res);
+    } else {
+        $parts = preg_split("/\n-- ?\n/", $res);
     }
 
-    $parts = preg_split("/\n-- ?\n/", $res);
-
     if (count($parts) > 1) {
-        $sign = "</pre><hr style='width: 100%; margin: 1em 0em; ' /><pre>" . array_pop($parts);
-        return join("\n-- \n", $parts).$sign;
+        $sign  = array_pop($parts);
+        if ($format == 'html') {
+            $res  = join('<br/>-- <br/>', $parts);
+            $sign = '<hr style="width: 100%; margin: 1em 0em; " />'.$sign;
+        } else {
+            $res  = join('\n-- \n', $parts);
+            $sign = '</pre><hr style="width: 100%; margin: 1em 0em; " /><pre>'.$sign;
+        }
+        return $res.$sign;
     } else {
         return $res;
     }