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('<', '<', $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 = ' (...)') { 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 = ' (...)') { // 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'){