[spip-dev] supprimer numéro

Salut,

Petite modification dans:
/ecrire/inc_texte.php3

J'ai ajout=E9 une petite fonction supprimer_numero(). Cette fonction
permet de "nettoyer" des titres num=E9rot=E9s en supprimant les blancs
avant, les num=E9ros, point et parenth=E8se. (C'est un simple
ereg_replace.)

On peut ainsi num=E9roter ses articles, ses rubriques (ou n'importe
quoi, d'ailleurs), pour forcer un ordre de pr=E9sentation (des boucles
{par titre}), ainsi:

  1. Premier article
  2. Deuxi=E8me article
10. Dixi=E8me article

ou

1 Premier
2 Deuxi=E8me

ou

1) Premier
2) Deuxi=E8me

Au moment de l'affichage sur le site public, il suffit de "traite" le
#TITRE avec cette fonction, donc d'ins=E9rer:

[(#TITRE|supprimer_numero)]

ARNO*

Elle est complètement bugguée cette fonction !

function supprimer_numero($texte){
    $texte = ereg_replace("^\ *[0-9]*\.*\)*\ *","",$texte);
    return $texte;
}

un truc comme ça serait déjà mieux :

function supprimer_numero($texte){
    $texte = ereg_replace("^[[:space:]]*[0-9]+[\.\)]?[[:space:]]*","",$texte);
    return $texte;
}

@ Arno* (arno@scarabee.com) :

J'ai ajouté une petite fonction supprimer_numero(). Cette fonction
permet de "nettoyer" des titres numérotés en supprimant les blancs
avant, les numéros, point et parenthèse. (C'est un simple
ereg_replace.)

-- Fil

Ca donne quoi sur "2001 l'odyssée de l'espace" ?
ou "68 c'était hier, on bouffait du riz cantonais..."
ou "3DSMax : tutorial"

@ Antoine Pitrou (pitrou@free.fr) :

Ca donne quoi sur "2001 l'odyssée de l'espace" ?
ou "68 c'était hier, on bouffait du riz cantonais..."
ou "3DSMax : tutorial"

Pas mieux que celle proposée par ARNO*, mais de toutes façons ces titres-là
ne sortiront jamais intacts d'un filtre supprimer_numero().

-- Fil

A priori, un titre est indiqué par un caractère spécifique après
le numéro (point, parenthèse...). D'autre part, on peut aussi limiter
le nombre de chiffres à 2, je pense.

Tiens, sinon, ça n'a rien à voir, mais la dernière version de Mozilla
(0.96) est carrément géniale (mieux qu'IE sur beaucoup de points).
L'affichage est rapide, le html est nickel, l'ergonomie commence à
être très bien (gestion de l'affichage de pages sous différents onglets,
logos avec survol correctement gérés contrairement à IE....). Pas de
problèmes de stabilité. Impressionnant. Il y a aussi un menu debug avec
des suites de tests parfois chiadés (pseudo-frames en CSS...).
Dans le registre HTML avant-gardiste, aller voir http://climbtothestars.org/.
La mise en page est tout en CSS, sans aucune table HTML.... Ca donne des
envies de squelettes ;))

a+

Antoine.

En réponse à Fil <fil@rezo.net>:

Dans le registre HTML avant-gardiste, aller voir
http://climbtothestars.org/.

Impressionnant, oui.

A noter un lien intéressant vers cet autre site :
http://evolt.org/article/The_XHTML_Transition_It_s_not_that_difficult/17/9953/index.html

:wink:

On peut effectivement d=E9cider qu'il faut absolument la pr=E9sence de
[point OU parenth=E8se] apr=E8s les chiffres. Je ne crois pas avoir vu de
contre-exemple sur un site Web.

En revanche, on ne peut pas limiter le nombre de chiffres: le r=E9seau
voltaire utilise d=E9j=E0 couramment une num=E9rotation =E0 3 chiffres, et i=
l
n'y a pas de raison de se limiter (puisque c'est un ordre
alphab=E9tique, un webmestre qui ins=E9rerait des articles au milieu des
autres pourrait tr=E8s bien num=E9roter en "allongeant" les chiffres, par
exemple placer 11 pour ajouter un article entre 1 et 2, puis 111 pour
un article entre 11 et 2, puis 1111 pour un article entre 111 et 2,
etc.).

ARNO*

Bonsoir,

ARNO* a écrit :

On peut effectivement décider qu'il faut absolument la présence de
[point OU parenthèse] après les chiffres. Je ne crois pas avoir vu de
contre-exemple sur un site Web.

Je pense qu'il ne faut pas rendre impossible un article commençant par
des chiffres suivant d'un point...
un exemple du type : "10.5 Ghz le dernier processeur d'AMDintel" serait
interprété comment ?
supprimer_numero() enlèverais "10." rendant le titre erroné !
Pour laisser l'écriture des titres aussi libres que possible ne
serait-il pas possible de pouvoir désactiver la fonction par un
caractère ex : "/10.5 GHz" ou "!10.5 GHz", ou dans le cas d'une
uniformisation des "commandes" spip utiliser un "raccourci typographique
comme : <HTML></HTML>

Pour ce qui est d'un exemple avec une parenthèse, il n'est pas
improbable de vouloir noter plusieurs articles du style :
1) première partie
2) deuxième partie
etc., en voulant que le numéro apparaisse...

Conclusion proposé : avoir une possibilité pour désactiver la fonction
par un code de caractère sans utiliser la "grammaire" des squelettes (
"[(#TITRE|supprimer_numero)]" ), car il se peut qu'on ait besoin a un
endroit du site une indexation ordonnée, et que dans une autre rubrique,
en utilisant le même squelette, on préfère garder les nombres...

Ne pouvant vous aider sur la programmation de la fonction, ceci sont
juste quelques réflexions...

@ Guilain Cabannes (guilain.cabannes@netcourrier.com) :

Conclusion proposé : avoir une possibilité pour désactiver la fonction
par un code de caractère sans utiliser la "grammaire" des squelettes (
"[(#TITRE|supprimer_numero)]" ), car il se peut qu'on ait besoin a un
endroit du site une indexation ordonnée, et que dans une autre rubrique,
en utilisant le même squelette, on préfère garder les nombres...

Euh, il faudrait pas non plus compliquer ad infinitum. On peut
éventuellement faire appel à un module d'intelligence artificielle, mais
avec une option dans les préférences avancées permettant de sélectionner
entre algorithme génétique et "force brute".

-- Fil

Sérieusement, de deux choses l'une :

* soit on fait un code spip particulier pour cette fonction (donc un filtre
  appliqué en "standard" sur tous les titres), et on définit une syntaxe
  unique : exemple - 01) 02)

* soit on fait un filtre à installer soi-même dans les squelettes, et il
  faut qu'il contienne un minimum d'intelligence. Et après chacun fait sa
  cuisine dans son coin.

Je voterais bien pour le choix 1).

Pour le tri, il n'est pas illusoire de vouloir pouvoir trier 1,2,10,11...
dans l'ordre numérique : après divers essais je peux le faire ("Il peut le
faire!!!") avec

    SELECT * FROM spip_articles ORDER BY 0+conv(titre,10,10) ;

Il suffirait d'implémenter un {par num} qui implémenterait cet ORDER là ?

@ Arno* (arno@scarabee.com) :

Pour le tri, il n'est pas illusoire de vouloir pouvoir trier 1,2,10,11...
dans l'ordre numérique : après divers essais je peux le faire ("Il peut le
faire!!!") avec

    SELECT * FROM spip_articles ORDER BY 0+conv(titre,10,10) ;

Il suffirait d'implémenter un {par num} qui implémenterait cet ORDER là ?

Correction : il suffit de faire "ORDER BY 0+titre", la solution ci-dessus,
obtenue par tâtonnements, plante sur les titres ne démarrant pas par un
chiffre.

C'est encore plus facile à implémenter dans spip ; je sens qu'Antoine y
travaille déjà !

-- Fil

Coucou,

Euh, il faudrait pas non plus compliquer ad infinitum. On peut
éventuellement faire appel à un module d'intelligence artificielle, mais
avec une option dans les préférences avancées permettant de sélectionner
entre algorithme génétique et "force brute".

Bof, un algogé pour faire du parsing.... A la rigueur un réseau de
neurones, pour s'amuser à faire compliqué.

C'est encore plus facile à implémenter dans spip ; je sens qu'Antoine y
travaille déjà !

L'intuition féminine, c'est pas encore ça :))

Bises

> C'est encore plus facile à implémenter dans spip ; je sens qu'Antoine y
> travaille déjà !

L'intuition féminine, c'est pas encore ça :))

Bon, bin alors voilà : c'est dans la 1.3b4 : le critère {par num titre} trie
les titres dans l'ordre NUMÉRIQUE ; par exemple

2- vache
10: cheval
   99
134) suite

trié {par titre} cela donne en revanche :

     99
10: cheval
134) suite
2- vache

On peut trier sur n'importe quel champ de cette manière. {par num texte} par
exemple, si vous êtes fous.

-- Fil

Bon, bin alors voilà : c'est dans la 1.3b4 : le critère {par num titre} trie
les titres dans l'ordre NUMÉRIQUE

Après encore des essais, il n'était pas nécessaire de modifier spip pour
obtenir ce tri, puisqu'il suffisait (hack!) de faire {par titre+0}.

Cela dit, dans le cas de {par titre+0} c'est un hack qu'on ne s'engage pas à
"supporter" ni à documenter, dans le cas de {par num titre} c'est en
revanche une spiperie officielle. A vous de voir.

-- Fil

le dim 25-11-2001 =E0 14:56, ARNO* a =E9crit :

Petite modification dans:
/ecrire/inc_texte.php3
J'ai ajout=E9 une petite fonction supprimer_numero(). Cette fonction=20
permet de "nettoyer" des titres num=E9rot=E9s en supprimant les blancs=20
avant, les num=E9ros, point et parenth=E8se. (C'est un simple=20
ereg_replace.)

Je fais l'enculeur de mouches ? Allez je le fais. J'avais adopt=E9 cette
solution ici, mais paf, quand on met seulement des num=E9ros, le tri {par
titre} marche mal apr=E8s le num=E9ro 10 (because tri alphab=E9tique donc=20
1 < 10 < 2). Donc j'ai plutot fait une fonction qui supprime les "A. "=20
"B. " etc... Enfin voil=E0. C'est vrai que si on colle des espaces devant
les num=E9ros =E7a marche mieux, mais bon, faut y penser avant et tout et
tout et tout.

a+
--=20
Thomas NOEL <thomas.noel@auf.org> http://www.auf.org/
http://www.refer.sn/
Syst=E8mes et R=E9seaux du Campus num=E9rique francophone de Dakar
Bureau Afrique de l'Ouest / Agence Universitaire de la Francophonie=20
BP 10017, Dakar - Libert=E9, S=E9n=E9gal. T=E9l : (221) 824 29 27 (poste 10=
7)

le lun 26-11-2001 =E0 10:25, Fil a =E9crit :

@ Antoine Pitrou (pitrou@free.fr) :
> Ca donne quoi sur "2001 l'odyss=E9e de l'espace" ?
> ou "68 c'=E9tait hier, on bouffait du riz cantonais..."
> ou "3DSMax : tutorial"
=20
Pas mieux que celle propos=E9e par ARNO*, mais de toutes fa=E7ons ces tit=

res-l=E0

ne sortiront jamais intacts d'un filtre supprimer_numero().

Ouaip, de toutes fa=E7on si tu veux utiliser "supprimer_numero" =E7a veut
dire que tu mets un num=E9ro au d=E9but du titre. L'utilit=E9 c'est de pouv=
oir
trier tes rubriques, articles ou autre dans l'ordre que tu veux (avec
{par titre}). Tu appelles tes diff=E9rentes rubriques "1. ma premiere" et
"2. ma deuxi=E8me" et tu affiches avec [(#TITRE|supprimer_numero)] et paf
! "ma premiere" sera affich=E9e avant "ma deuxi=E8me" mais sans que les
utilisateurs voient les num=E9ros...

Donc de toute fa=E7on, quand tu utilise "supprimer_numero" ca veut dire
que tous tes titres (ou autre) ont un num=E9ro au d=E9but.=20

Voil=E0.

--=20
Thomas NOEL <thomas.noel@auf.org> http://www.auf.org/
http://www.refer.sn/
Syst=E8mes et R=E9seaux du Campus num=E9rique francophone de Dakar
Bureau Afrique de l'Ouest / Agence Universitaire de la Francophonie=20
BP 10017, Dakar - Libert=E9, S=E9n=E9gal. T=E9l : (221) 824 29 27 (poste 10=
7)

Salut,

Essayez l'ajout automatique du site http://www.decathlon.com/ !
Résultat impressionant (SPIP rapatrie toute la page) et je comprends pas
pourquoi !
(Win95SE, IE6, SPIP 1.3b4)
Avez-vous ce même problème ?

Raphaël

Salut,

La page en question contient deux en-têtes (<head><title>...</title>..</head>).
La routine d'analyse est un peu laxiste et récupère tout ce qui va du début
du premier <head> à la fin du second :wink: Je vais améliorer ça....

a+

Antoine.

"Raphael (DreamNev.Org)" wrote:

Salut,

Quelques modifs :

- modifié supprimer_numero pour discriminer plus finement les numéros
(point ou parenthèse après au moins un chiffre) -> ecrire/inc_texte

- amélioré l'analyse de site (ouf, Décathlon est correctement décortiqué !)
-> ecrire/inc_sites

- corrigé un bug de ma part qui empêchait de supprimer un message en
cours de rédaction -> ecrire/messagerie

- corrigé le bug qui empêchait de revenir à la tranche zéro dans
l'affichage par tranches -> ecrire/inc

- ajouté une fonction supprimer_tags qui, comme son nom l'indique,
supprime les tags HTML (utilisée dans l'analyse de site et dans
textebrut()) -> ecrire/inc_texte

Je crois que c'est tout.

a+

Antoine.

Hello,

- ajouté une fonction supprimer_tags qui, comme son nom l'indique,
supprime les tags HTML (utilisée dans l'analyse de site et dans
textebrut()) -> ecrire/inc_texte

Euh ... pourquoi ne pas utiliser PHP: strip_tags - Manual ???

Nicolas.