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.
if ( ( strlen( $seg ) + strlen( $word) + 1 ) <= $limit ) { $seg .= $word . ' ' ;
} else { $segs[] = $seg ;
$seg = $word . ' ' ; // espace rajouté après relecture
}
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.
