Valider c3e184df rédigé par Glop's avatar Glop Validation de cerdic
Parcourir les fichiers

fix: Filtre `|couper`, ne pas couper si le texte est déjà à la bonne taille

Plutôt que de reposer sur un marqueur de fin de texte (`\n`), autant
détecter dès le début si le texte est déjà à la longueur demandée.
Cela évite en particulier des cas où le texte est inutilement coupé
juste parce que la coupe retire le marqueur de fin pour laisser de
la place pour les points de suite.

Ainsi, par exemple :
```
[(#VAL{Encore un test du filtre |couper bla bli blu}|couper{44})]
```
renvoie
* jusqu'à eebacfbe inclus :
  `Encore un test du filtre |couper bla (...)` (42 caractères
  → OK, mais coupe inutile) ;
* après ce correctif :
  `Encore un test du filtre |couper bla bli blu` (44 caractères
  → OK, sans coupe inutile).

Refs: #5422
parent a7f7a786
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+29 −29
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -417,8 +417,11 @@ function couper($texte, $taille = 50, $suite = null) {
	// supprimer les tags
	$texte = supprimer_tags($texte);
	$texte = trim(str_replace("\n", ' ', $texte));
	$texte .= "\n";  // marquer la fin

	// tester s'il est nécessaire de couper le texte
	if (spip_strlen($texte) <= $taille) {
		$points = '';
	} else {
		// points de suite
		if (is_null($suite)) {
			$suite = (defined('_COUPER_SUITE') ? _COUPER_SUITE : '&nbsp;(...)');
@@ -446,9 +449,6 @@ function couper($texte, $taille = 50, $suite = null) {
		} else {
			$texte = $court;
		}

	if (strpos($texte, "\n")) {  // la fin est encore la : c'est qu'on n'a pas de texte de suite
	$points = '';
	}

	// remettre les paragraphes