Hyogapag Posté 16 Juillet 2006 Posté 16 Juillet 2006 Bonjour, quelqu'un connait-il ou a-t-il écrit une fonction permettant de scinder une variable de type string en éléments de tableaux (comme explode) en faisant en sorte que chaque élément ait une longueur déterminée (comme wordwrap)? En fait, ma variable est un message de forum d'environ 3000 caractères et composé d'une multitude de pseudo-paragraphes délimités par des <br /> . Je voudrais scinder cette variable en plusieurs morceaux, disons de 600 caractères environ chacun. Seulement, je voudrais que la scission ne puisse se faire qu'à des <br /> , en considérant ce retour à la ligne comme un séparateur de la fonction explode() (c'est-à-dire que le retour à la ligne en question ne se trouve dans aucun des éléments de tableau de sortie). Voici un exemple : function foo($texte, $taille, $separateur) {jgklfghlgkh;}$message="première partie du message<br />deuxième partie du message<br />troisième partie du message";$message=foo($message, 40, "<br />");//Et on aurait donc :$message[0]==="première partie du message<br />deuxième partie du message"; //n'a pas coupé au premier <br /> car le nombre de caractères aurait été insuffisant$message[1]==="troisième partie du message"; J'espère que ma description est compréhensible. Merci d'avance.
marcha Posté 19 Juillet 2006 Posté 19 Juillet 2006 Qqch dans le genre, à affiner function foo($texte, $taille, $separateur) { $lensep = strlen($separateur); $lignes = array(); do { // si aucun intérêt à chercher un séparateur ou si aucun séparateur trouvé if( ( strlen($texte) < $taille + $lensep ) || ( ($pos = strpos($texte, $separateur, $taille))===false ) ) { $lignes[] = $texte; // prend la fin du texte break; } $lignes[] = substr($texte, 0, $pos); // prend jusqu'au séparateur $texte = substr($texte, $pos + $lensep); // réduit le texte sans le séparateur } while($texte); return $lignes;}
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant