COUPER UNE CHAINE SANS COUPER LES MOTS ET SANS DÉPASSER LES LIGNES

cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 - 18 févr. 2005 à 18:08
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 - 20 févr. 2005 à 15:24
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29619-couper-une-chaine-sans-couper-les-mots-et-sans-depasser-les-lignes

cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
20 févr. 2005 à 15:24
Pourquoi tu ne corriges pas toi même ??
fuckya Messages postés 125 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 8 juin 2006
20 févr. 2005 à 12:44
C'est pas grave ^^ mais si j'ai bien compris, ta fonction découpe chaque mot et l'affiche ?
cs_FreakDev Messages postés 17 Date d'inscription lundi 16 février 2004 Statut Membre Dernière intervention 23 février 2009
20 févr. 2005 à 11:18
Anthomicro :
certe tu peux totalement déformer un site. Encore que avec ma solution tu risque moins de déformer un site que quand la chaine est coupée au premier caractère espace après la limite
mais de toutes façon j'utilise ceci dans le cas d'un générateur de pdf en php
tout dépend donc de l'utilisation que l'on en fait...

fuckya :
dsl pour cette maladresse, je n'est pas ce souci du détail...
mais bon même pour un débutant je pense que l'erreur renvoyer pour ce genre de faute est "expected '{' at row 2"... bon ça va CT pas trop dur à débugger... ;)
mais j'aurais pu faire gaffe quand même...j'avoue...

coockiesch :
$str2 = substr($str,strlen($str1),strlen($str)-strlen($str1));
C vrai que pour cette ligne G un peu abusé quand même...
mais dans la boucle je n'ai pas trop le choix, y'en a un que je peux virer mais pas les deux, sinon ça change le principe de mon algo (ce qui a des fin d'optimisation devrait peut-être être fait... mais bon...)


Kirua :
strlen($str1+$tStr[$j])+1;
exacte il y a un petit pb ici...
je sais que les fonctions sur les chaines sont pour la plupart loude et longues à éxécuter... mais je ne suis pas un fanatique de l'optimisation en temps d'éxécution mais plutot en temps de réflexion...
disons que je suis un féniant koi... ;)

sur ce, bon coding à tous !!
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
19 févr. 2005 à 13:22
"strlen($str1+$tStr[$j])+1;"

je sais pas ce que c'est le +, mais j'imagine que ça fait office de concaténation (ça me paraît bizarre qd même, j'ai peut-être mal compris le code). quoi qu'il en soit, tu ne dois pas faire:

strlen($str1 . $str2)

mais bien:

strlen($str1) + strlen($str2)

parce que dans le premier cas, tu concatènes les chaînes (long et lourd) et ensuite tu en calcules la longueur (ce qui a déjà dû être fait de manière cachée par la concaténation, c'est du gachis). la seconde version au contraire se contente de calculer la longueur des deux chaînes séparément, ce qui est équivalent mais bcp plus rapide.

au passage, t'as pas l'air de t'en rendre compte, mais appeler strlen c'est lourd comme opération (si du moins c'est, comme je le pense, le même procédé qu'en C). faudrait optimiser ça;

ensuite, pour avoir écrit ce genre de code en C++, t'as tout intérêt à parser toi-même le texte, caractère après caractère; c'est plus chiant à écrire comme code, plus long, moins élégant; mais nettement plus rapide parce que tu optimises directement.
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
18 févr. 2005 à 23:09
Salut!
J'aime pas trop l'idée d'avoir une fonction comme strlen dans une boucle... D'ailleurs, pit être tout simplement trop de strlen...

@++

R@f
fuckya Messages postés 125 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 8 juin 2006
18 févr. 2005 à 19:47
Tu pourrais eventuellement vérifier que ton code marche bien avant de poster ;)

function y'a un { apres ;)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
18 févr. 2005 à 18:21
Salut,

le problème est que justement si ça ne coupe pas un mot bah tu peux très bien déformer tout un site...

Utilise la fonction wordwrap() sinon, c'est beaucoup plus rapide et plus simple d'utilisation.

a ++
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
18 févr. 2005 à 18:08
Oh et la limite? elle est ou ?
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
18 févr. 2005 à 18:08
Euh, tu pourrais pas faire ta fonction pour qu'elle RETOURNE cette la valeur recherchée... ca srait beaucoup plus utile...
et c'est quoi ce <tr> qui traine :P ?
Rejoignez-nous