[spip-dev] "Bug" dans la fonction surligner_mots de inc_surligne.php3

Pour info,

le commentaire suivant est faux :

// Remplacer une occurence de mot maxi par espace inter-tag (max 1 par
paragraphe, sauf italiques etc.)
// se limiter a 4 remplacements pour ne pas bouffer le CPU

en fait le code affiche 4-1 mots surlignés.
Est-ce que ce paramètre peut se mettre en variable quelque part ?

Merci.

Yves

Note: le surlignage pose problème avec une recherche du type "acronym" :
http://spip4/article.php3?id_article=1&var_recherche=acronym

ça "casse" le tag <acronym title=""> mais pas à tout les coups !?
Est-ce que ça peut "casser" n'importe quel tag (de plus de 3 caractères) ?

PS: le fichier css que j'ai fourni précédemment n'est pas à jour.
Voici celui qui se trouve dans le répertoire
http://rezo.net/spip-dev/devel/SPIP-v1-4PR1/
avec la modif pour acronym.

spip_style.css (1.2 KB)

@ Yves Pratter <ypr@alex.fr> :

en fait le code affiche 4-1 mots surlignés.

Je n'ai rien compris à cette phrase, désolé.

Est-ce que ce paramètre peut se mettre en variable quelque part ?

A priori non, mais c'est envisageable pour la suite s'il y aune demande.

Note: le surlignage pose problème avec une recherche du type "acronym" :
http://spip4/article.php3?id_article=1&var_recherche=acronym

Tu peux nous donner l'URL complète ?

ça "casse" le tag <acronym title=""> mais pas à tout les coups !?

Normalement c'est programmé pour ne pas casser les tags. Peux)tu nous donner
une URL où ça "casse" ?

Est-ce que ça peut "casser" n'importe quel tag (de plus de 3 caractères) ?

Normalement non.

-- Fil

en fait le code affiche 4-1 mots surlignés.

Je n'ai rien compris à cette phrase, désolé.

Autant pour moi.

// Remplacer une occurence de mot maxi par espace inter-tag (max 1 par
paragraphe, sauf italiques etc.)
// se limiter a 4 remplacements pour ne pas bouffer le CPU
if ($mots_surligne) {
  $regexp = '/(>([^<]*[^[:alnum:]])?)(('.join('|',
$mots_surligne).')[[:alnum:]]*?)/Uis';
  $page = preg_replace($regexp, '\1<span class="spip_surligne">\3</span>',
$page, 4);
}

Le commentaire indique qu'on se limite à 4 remplacements et le dernier
paramètre de preg_replace est bien 4.
Mais en pratique seul les 3 premières occurences sont surlignées.

Normalement c'est programmé pour ne pas casser les tags.
Peux-tu nous donner une URL où ça "casse" ?

Non pour l'URL car c'est un site local.

Par contre cré un article avec le texte suivant :

Le commentaire indique qu'on se limite à 4 remplacements et le dernier
paramètre de preg_replace est bien 4.
Mais en pratique seul les 3 premières occurences sont surlignées.

Non, chez moi c'est bien 4, mais dans TOUTE LA PAGE (sauf utilisation des
balises #DEBUT_SURLIGNE et #FIN_SURLIGNE pour délimiter les parties à
surligner) : donc y compris dans la partie navigation, le titre, etc...

-----------------------------
Voici <acronym title="système de publication pour l'internet">SPIP</acronym>
qui est un acronyme.
<acronym title="système de publication pour l'internet">SPIP</acronym>
-----------------------------

Vu. Je corrige dans le cvs, et je vais ajouter un élément de configuration
de ce facteur (4). Merci !

-- Fil

Le bouton "supprimer cette rubrique" apparait quand on fait un login en tant qu'auteur, lors de la navigation dans le site, espace privé.
Je suppose que ça ne devrait pas être le cas.

From fil@miel.brainstorm.fr Wed Aug 21 12:58:33 2002

Return-Path: <fil@miel.brainstorm.fr>
Received: by miel.brainstorm.fr (Postfix, from userid 1001)
  id 361B91C4B1; Wed, 21 Aug 2002 12:58:33 +0200 (CEST)

@ thomasc@belgaboard.com <thomasc@belgaboard.com> :

Le bouton "supprimer cette rubrique" apparait quand on fait un login
en tant qu'auteur, lors de la navigation dans le site, espace privé.
Je suppose que ça ne devrait pas être le cas.

Oui, il y a une incohérence. Je vais tâcher de corriger ça. Merci !

-- Fil