Tronquer un texte et ignorer certaine chaine de texte

netwebzone Messages postés 55 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 22 août 2008 - 29 déc. 2004 à 15:08
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 31 déc. 2004 à 12:15
Bonjour,

J'ai une fonction qui permet de tronquer un texte si il est supérieur à un certain nombre de caractère..
Seulement, j'aimerais également qu'elle ne prenne pas en compte certaine chaine du style [mail] car c'est du bbcode...
C'est à dire qu'elle ne doit pas compter ces chaines lorsqu'elle compte le nombre de caractères..., qu'elles les "sautent" si on peut dire ca comme ca...

Comment faire ?
Je ne sais pas si vous m'avez compris mais bon...

Merci

@
+

Ma fonction :

if($max_caracteres!='0' && strlen($txt)>$max_caracteres)
{
$txt = substr($txt, 0, $max_caracteres);
$position_espace = strrpos($txt, " ");
$txt = substr($txt, 0, $position_espace);
$txt = $txt." [...]";
}

27 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 déc. 2004 à 13:04
Salut,

je reviens...lol.
J'ai peut-etre une solution, mais je ne peux pas la tester, etant au taf, n'ayant pas et ne pouvant pas installer php.
Mais c'est a reflechir...
tu prends $txt_original, tu fais un explode avec les espaces pour avoir un tableau contenant tous les "mots" de ton texte (y compris les bbcodes). Ce sera $tb_original[] par exemple.
Tu fais ton extraction des bbcodes.
Tu fais aussi un explode de ce $texte, tu auras un $tb[] avec uniquement chaque mot de ton texte tronque.
Dans $tb_original, tu recherches tes bbcodes et tu gardes : le bbcode et son index (donc son niveau dans la tableau).

Ensuite, ce que tu as a faire, c'est replacer les bbcodes au bon index dans $tb[]. Les index seront les memes puisque le texte n'est tronque qu'a la fin. Si un index depasse l'index maximum de ton $tb[], c'est que le texte entoure de 2 tags bbcodes a ete tronque aussi...donc la, a toi de voir, mais la meilleure solution a mon avis est de replacer le 1er bbcode dont l'index depasse le plus grand index de $tb[]

heu...exemple, parce que ce sera plus clair lol :

T'as ce texte original :
Salut, je m'appelle Henri, mon adresse mail est [email] henri@hotmail.com /email

ton texte est tronque a :
Salut, je m'appelle Henri, mon adresse mail est henri@hot...

1er tableau : index 10 max
2eme : index 8 max
position du dernier bb code : index 10.
Ben tu le replaces a la fin, et tu places le 1er tag a son index (8) :
Salut, je m'appelle Henri, mon adresse mail est [email] henri@hot /email ...

Bon je me rends compte que (je ne connais pas le bbcode) il n'y a probablement pas d'espaces entre les tags bbcode et le texte qu'ils entourent...donc l'explode par l'espacement n'est peut-etre pas suffisant. Mais je pense qu'il y a une idee.

@+
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
30 déc. 2004 à 13:12
oui ça peut marcher tout dépends de comment est ton BBCODE, il faudrait pe traiter ton bbcode avant...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
0
netwebzone Messages postés 55 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 22 août 2008
30 déc. 2004 à 19:55
lol merci malalam :) même si j'ai pas tout compris ! lol !
Ca m'a l'air compliqué, je ne pense pas m'y connaitre assez, surtout concernant le implode...

Enfin je vais essaye de lire et relire ton post, lol

Encore merci de ton aide...
et de celle des autres aussi :)

@+
0
netwebzone Messages postés 55 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 22 août 2008
31 déc. 2004 à 10:05
Salut,

JE viens d'avoir une autre idée, il faudrait voir avant si le texte contient les chaines de bbcode et on ajoute donc le nombre de caractères correspondant au nombre de caractère pour tronquer... nan ?
Comment fait-on pour voir si un texte contient une chaine ?
Par exemple,
$texte = bla bla bla bla bla bla
Comment fait-on pour voir si $texte contient et ?

Merci
A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
31 déc. 2004 à 10:59
lol, j'ai dis la même chose plus haut....

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
0
netwebzone Messages postés 55 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 22 août 2008
31 déc. 2004 à 11:03
ah bon... je ne vois pas ou...
Comment fait-on pour voir si un texte contient une chaine de caractère précise alors ?
Merci
A+
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
31 déc. 2004 à 12:15
eregi() ou encore strpos

a +

Vulgarisation informatique : Entraide, dépannage et vulgarisation informatique

Forum d'entraide informatique (14 catégories)
0
Rejoignez-nous