diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index 3e3a8582b5d73fc48cfb8241f2d480de8b0c7329..168b3563ddc8b6b232d4ad529780a66345040ceb 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -681,10 +681,11 @@ function recuperer_numero($texte) {
  *     Texte converti
 **/
 function supprimer_tags($texte, $rempl = "") {
-	$texte = preg_replace(",<[^>]*>,US", $rempl, $texte);
-	// ne pas oublier un < final non ferme
+	$texte = preg_replace(",<(!--|\w|/)[^>]*>,US", $rempl, $texte);
+	// ne pas oublier un < final non ferme car coupe
+	$texte = preg_replace(",<(!--|\w|/).*$,US", $rempl, $texte);
 	// mais qui peut aussi etre un simple signe plus petit que
-	$texte = str_replace('<', ' ', $texte);
+	$texte = str_replace('<', '&lt;', $texte);
 	return $texte;
 }
 
diff --git a/ecrire/inc/texte_mini.php b/ecrire/inc/texte_mini.php
index bc2a90a14144ad7f51995c52e61ce8eeda446902..a773767ded08423144b276edac72fd268eb26b9d 100644
--- a/ecrire/inc/texte_mini.php
+++ b/ecrire/inc/texte_mini.php
@@ -292,7 +292,7 @@ function couper($texte, $taille=50, $suite = '&nbsp;(...)') {
 	if (!($length=strlen($texte)) OR $taille <= 0) return '';
 	$offset = 400 + 2*$taille;
 	while ($offset<$length
-		AND strlen(preg_replace(",<[^>]+>,Uims","",substr($texte,0,$offset)))<$taille)
+		AND strlen(preg_replace(",<(!--|\w|/)[^>]+>,Uims","",substr($texte,0,$offset)))<$taille)
 		$offset = 2*$offset;
 	if (	$offset<$length
 			&& ($p_tag_ouvrant = strpos($texte,'<',$offset))!==NULL){
@@ -313,17 +313,17 @@ function couper($texte, $taille=50, $suite = '&nbsp;(...)') {
 	// supprimer les traits, lignes etc
 	$texte = preg_replace("/(^|\r|\n)(-[-#\*]*|_ )/", "\r", $texte);
 
-	// supprimer les tags
-	$texte = supprimer_tags($texte);
-	$texte = trim(str_replace("\n"," ", $texte));
-	$texte .= "\n";	// marquer la fin
-
 	// travailler en accents charset
 	$texte = unicode2charset(html2unicode($texte, /* secure */ true));
 	if (!function_exists('nettoyer_raccourcis_typo'))
 		include_spip('inc/lien');
 	$texte = nettoyer_raccourcis_typo($texte);
 
+	// supprimer les tags
+	$texte = supprimer_tags($texte);
+	$texte = trim(str_replace("\n"," ", $texte));
+	$texte .= "\n";	// marquer la fin
+
 	// corriger la longueur de coupe
 	// en fonction de la presence de caracteres utf
 	if ($GLOBALS['meta']['charset']=='utf-8'){