Le 20/12/2011 14:39, telemake . a écrit :
> Bonjour,
>
> je cherche depuis quelques temps une fonction SPIP permettant de couper
> le texte en plusieurs parties.
>
> Habituellement, j'utilise la balise[(#/TEXTE/|couper1000)]
>
> Reste que je souhaite dire à cette fonction, à l'instar de celle de
> l'affichage des articles ({0,3} {3,3} par exemple), tu coupes le texte
> du caractère 0 à 1000 puis la 2e partie de 1000 à 2000 etc...
>
> La fonction peut paraitre un peu inutile quand on connait le découpage
> en page avec les fameux -----
> Reste que c'est pour intégrer dans un flux XML (SPIP) bien précis d'un
> partenaire qui souhaite que la première partie du texte fasse 1000
> caractères puis passe à la page 2 jusqu'au 1000 prochains ainsi de suite....
>
> En conclusion, existe t-il ou y'a t-il un moyen d'avoir une fonction du
> genre [(#/TEXTE/|couper{0,1000})] [(#/TEXTE/|couper{1000,2000})] etc....
Je ne connais pas de système ou plutot de fonction déjà existente ;
personnellement j'ai dérivé une version de couper() en couper_court()
dans mes_options.php ; mais ces deux fonctions ne gèrent pas la césure,
les espaces entre mots, encore moins la ponctuation !
Est-ce nécessaire dans le cadre de ton besoin ?
Par ailleurs, avoir un filtre de modélisation de #TEXTE*
qui nous ressortirait par Blocs (pour les nouveaux itérateurs)
le #TEXTE fragmenté par :
- les traditionnels ----
- les alinéa de sommaire (définis par {{{ )
- les séparateurs de pages (comme les ++++ du CS)
- la longueur absolue (format fixe à -1000, et le n° de fragment)
- la longueur mise-en-forme (approximativement, et len° de fragment)
serait un outil qui généraliserait/factoriserait du code qui doit
exister dans plein de fonctions de SPIP, et ouvrirait par ailleurs
la voie à une extension de CRAYONS à la mode MediaWiki ...
Mais j'ai dû rever : je ne maitrise pas assez les regexp pour....
(car je n'ai que les idées, mais pas le savoir-faire suffisant...dslé)
@+
YannX
_______________________________________________
liste spip
sp...@rezo.net - désabonnement : envoyer un mail à spip...@rezo.net
Infos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/
Documentation de SPIP : http://www.spip.net/
Irc : de l'aide à toute heure : http://spip.net/irc
ca ressemble furieusement a la fonction substr de php ce dont tu parles
... De mémoire, il est possible d'appeller des fonctions php direct si
leur premier paramètre est le texte. Du coup,
[(#TEXTE|substr{1000,2000})] devrait faire l'affaire ... ( attention,
c'est brut de décoffrage: ça coupera à 1000 caractères pile, sans
fioritures... )
Sinon, couper est définie dans ecrire/inc/texte.php , cela peut servir
de base à la création d'un filtre maison à placer dans le fichier
mes_fonctions.php du squelette par exemple.
[[Cf. post de Vincent : effectivement, c'est la meme idée (plutot
SUBSTR$ du Basic ;-))
mais en gérant les bonnes cesures (si couper le fait, et donc les
fragments..) ]]
function couperec($texte, $taille=50, $ifrag = 0, $suite = '') {
if ($ifrag==0) {
return couper($texte, $taille, $suite); }
else return couperrec( substr($texte, strlen(couperec($texte,
$taille=50, $ifrag = 0, $suite = '') ), $offset), $ifrag-1, $taille,
$suite); } // a peu prêt !!
}
// atttention, c'est parfaitement goret comme ecriture......
// exceed time limitation garantie.....
Mais enn recherchant la syntaxe exacte, je m'apercois que
nous sommes un peu coincés par la syntaxe d'origine :
- d'une part la taille est-elle prévue pour utiliser d'autres
séparateurs comme je l'indiquais ?
- d'autre par les caractères de suite empechent de générer facilement le
n°de fragment,
donc cela impose -je crains- de rajouter une fonction nouvelle, au core
ou en plugin ou mes_options...
J'avoue ne pas regarder plus avant le code :
70 lignes, dans inc\texte.php c'est bcp !
Mais peut-etre que Cedric s'il voit cela, aurait la bonne formulation
En se basant sur #INTRODUCTION{1000} ( ou sur couper{1000}}
Faire un truc du genre:
#SET{nbcar,#INTRODUCTION{1000}|strlen}
Puis un
[(#TEXTE|substr{#GET{nbcar},2000})]
Ça ne gère pas les #DESCRIPTIF ni les #CHAPO, mais si c'est que du
texte, pourquoi pas.
Denis
Le 20/12/2011 14:55, Vincent a écrit :