cds0671
Messages postés18Date d'inscriptionvendredi 17 février 2006StatutMembreDernière intervention17 novembre 2009 6 juil. 2009 à 09:44
Bonjour nautilus et merci beaucoup pour ton aide.
J'ai juste quelques précisions à te demander !
Je ne comprend pas tout à fait ce que réalise ta boucle for each ? pourrais tu stp mettre des commentaires aux lignes de codes, car par exemple lors de l'appel de la fonction tu note long_string( $str '', $limit 255 )
$str='' !!! ça change quoi par rapport lorsqu'on passe $str tout simplement ?? c'est quoi la différence?
Cette fonction doit pouvoir me permettre de faire une extraction Excel en contournant le problème des 255 caractères max par cellule, pour celà j'utilise les class "writeexcel" et je dois retourner une formule et donc mettre un égale devant la chaine retournée !! comment dois-je faire stp ?
nautilus99
Messages postés661Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention18 septembre 20091 6 juil. 2009 à 10:37
Bonjour,
Et lerci pour les commentaires... et pour les précisions, bien que commenter un code PHP aussi basic ne soit pas évident:
function long_string( $str '', $limit 255 )
Bien que PHP, comme la plupart des langages interprétés, n'impose pas l'initialisation des variables ou paramètres, je garde la bonne vielle habitude du C et C°°, à savoir toujours initialiser une varaible et toujours donner une valeur par défaut à un paramètre. Par rapport à la simple déclaration de nom, on a pour seul changement que même en cas d'appel de la fonction sans lui passer d eparamètres, on a une chaine vide en tant qu evaleur de chaine. De plus, en nommant et initialisant les paramètres, on obtient dans l'appel de la fonction, un équivalent des 2 variables locales my du Perl.
$words = explode( ' ', $str ) ;
foreach ( $words as $word ) {
La boucle foreach de PHP est identique à celle du Perl. Ici, on a transformé la chaine passée en entrée en un tableau de mots, le explode étant sur le caractère espace.
On commence par tester si la longueur du segment de chaine en cours + la longueur du mot courant + l'espace reste < à 255 caractères.
Si oui, on rajoute le mot plus un espace au segment courant.
Sinon, on insère le segment courant à la fin du tableau des segments et on initialise le segment courant avec le mot (et un espace, désolé, je l'avais oublié lors de l'écriture rapide de ton équivalence).
Enfin, pour retourner une chaine avec un "=" devant, il suffit, dans le return d eta fonction, de concaténer l'ensemble avec l'opérateur de concaténation de chaine d ePHP, le '.', ce qui donne:
return '=' . implode( '&', $segs ) ;
La syntaxe de PHP est assez directe et très compréhensible, pour peu que l'on ait de bonnes bases en C/C++, voire en Perl, PHP ayant largement emprunté à ces langages dans sa définition.
cds0671
Messages postés18Date d'inscriptionvendredi 17 février 2006StatutMembreDernière intervention17 novembre 2009 6 juil. 2009 à 11:05
Super merci beaucoup mais j'ai encore une question désolé loll
Lorsque ma chaine de caractère est supérieure à 255, je ne comprend pas mais lorsque je fait un echo implode(', ',$segs); par exemple pour tester,
ce que je récupère c'est uniquement les 255 premiers caractères pas les suivants ? pourrait tu stp me dire pr quoi ?
Merci encore pour ton aide, vraiment merci beaucoup