diff --git a/ecrire/inc/texte_mini.php b/ecrire/inc/texte_mini.php
index 6a9517a751f265aa2a02e53bcf7a5dc5c5cf7489..28c19d39b2769a7852b7a1aec0a44f48257d5897 100644
--- a/ecrire/inc/texte_mini.php
+++ b/ecrire/inc/texte_mini.php
@@ -226,9 +226,12 @@ $preg='') {
 function echappe_retour($letexte, $source='', $filtre = "") {
 	if (strpos($letexte,"base64$source")) {
 		# spip_log(spip_htmlspecialchars($letexte));  ## pour les curieux
-		if (strpos($letexte,"<")!==false AND
+		$max_prof = 5;
+		while (strpos($letexte,"<")!==false
+			AND
 		  preg_match_all(',<(span|div)\sclass=[\'"]base64'.$source.'[\'"]\s(.*)>\s*</\1>,UmsS',
-		$letexte, $regs, PREG_SET_ORDER)) {
+		$letexte, $regs, PREG_SET_ORDER)
+		  AND $max_prof--) {
 			foreach ($regs as $reg) {
 				$rempl = base64_decode(extraire_attribut($reg[0], 'title'));
 				// recherche d'attributs supplementaires