[spip-dev] {titre==^(truc)} est-ce correcte ?

Bonjour,

j'aurais besoin d'un petite confirmation des développeurs :

dans une boucle je cherche à sélectionner les éléments dont le titre
commence par "trucs" avec le critère :
{titre==^(trucs)}

ça semble bien fonctionner :
prend "trucs XXX"
pas "truc XXX"
ni "XXX trucs"

mais je voulais savoir si c'était un hazard (risque de ne plus
fonctionner dans les prochaines versions), ou correct

j'ai évidement lu dans la doc : http://www.spip.net/fr_article900.html
{titre==^[aA]} -> titre commence par « a » ou « A » ; mais là on se
base que sur la première lettre ...

merci d'avance,

* Sylvain tapotait, le 02/11/2006 12:06:

Bonjour,

j'aurais besoin d'un petite confirmation des développeurs :

dans une boucle je cherche à sélectionner les éléments dont le titre
commence par "trucs" avec le critère :
{titre==^(trucs)}

ça semble bien fonctionner :
prend "trucs XXX"
pas "truc XXX"
ni "XXX trucs"

mais je voulais savoir si c'était un hazard (risque de ne plus
fonctionner dans les prochaines versions), ou correct

j'ai évidement lu dans la doc : Les critères communs à toutes les boucles - SPIP
{titre==^[aA]} -> titre commence par « a » ou « A » ; mais là on se
base que sur la première lettre ...

La syntaxe que tu a utilisé dis : rechercher un bloc () commençant au début du champ ^ et contenant trucs.
Donc, tout va bien.
Un site qui pourra t'être utile sur les regexp : http://www.rexv.org/

Jacques PYRAT a écrit :

j'ai évidement lu dans la doc : Les critères communs à toutes les boucles - SPIP
{titre==^[aA]} -> titre commence par « a » ou « A » ; mais là on se
base que sur la première lettre ...

La syntaxe que tu a utilisé dis : rechercher un bloc () commençant au début du champ ^ et contenant trucs.
Donc, tout va bien.
Un site qui pourra t'être utile sur les regexp : http://www.rexv.org/

très intéréssant,

et peut-on faire un tri dans une boucle avec des regexp ?

J'ai des titres standardisé présenté ainsi
- titre 1 (var1)
- titre 2 (mot2)
- titre 3 plus long (choix3)

et je voudrais trier mes résultat sur ce qui se trouve entre parenthèse.

il faut faire un truc dans ce genre là ?
{par titre==$((.*))}

Sylvain a écrit :

Bonjour,

j'aurais besoin d'un petite confirmation des développeurs :

dans une boucle je cherche à sélectionner les éléments dont le titre
commence par "trucs" avec le critère :
{titre==^(trucs)}

ça semble bien fonctionner :
prend "trucs XXX"
pas "truc XXX"
ni "XXX trucs"

mais je voulais savoir si c'était un hazard (risque de ne plus
fonctionner dans les prochaines versions), ou correct
  
non, c'est pas un coup de chance, c'est correct.
n'importe quelle regexp, sachant qu'elle est interprétée par mysql (donc ca n'est pas gratuit en perf.)

@++

indie wrote:

J'ai des titres standardisé présenté ainsi
- titre 1 (var1)
- titre 2 (mot2)
- titre 3 plus long (choix3)

et je voudrais trier mes résultat sur ce qui se trouve entre parenthèse.

il faut faire un truc dans ce genre là ?
{par titre==$((.*))}

Bon, c'est plus une discussion à avoir sur spip@rezo.net, pas sur la liste de dev.

En tout cas, normalement tu dois pouvoir (jamais essayé mais je me rappelle qu'esj avait ajouté cela) trier par une colonne sur laquelle tu appliques une fonction mysql. Donc un truc dans le genre:
{par SUBSTRING_INDEX(titre,'(',-1)}

pourrait marcher.

Sinon, je te conseille d'utiliser le plugin tri par mot clef, qui te permet de faire des tris complexe dans le genre sans bidouiller trop :wink:

Pierre