Découpage d'un texte en fonction des sauts de lignes

Contenu du snippet

Un débutant pour les débutants...
Petite histoire: en récupérant un texarea provenant d'une base de donnée pour le mettre dans un pdf (avec fpdf) je me suis retrouvé avec un texte sur une seule ligne et avec tout les " br " de visible. j'ai donc cherché à découper le texte pour en extraire les lignes indépendamment.
je m'en suis bien sortie (puisque ça fonctionne !) et je me suis dit que cela pouvais être utile à d'autre, moi j'ai découpé en fonction des " br " mais ça marchera avec autre chose.....

Source / Exemple :


<?php

// le texte en question

$area1='La psychologie des foules<br />montre à quel point les lois<br />et les institutions exercent peu<br />d action sur leur nature impulsive ';
//          0                           25    31                             60    66                                 98    104                               141

$chaine=$area1; // on assigne un variable en vu de textes différents.........

$longstring=strlen($chaine);//  récupère la longueur de la chaine de caractères

echo $chaine.'<br><br>'; // on affiche le texte

$Cptage = substr_count ($chaine, '<br />'); // récupère le nombre de <br />

$i=1; // on incrémente la variable qui va servir pour la boucle

 while($i < ($Cptage+2) ) // la variable "$i" bouclera jusqu'à atteindre le nombre de <br /> et " +2 " => parce qu'il y a une lignes avant le 1er <br /> et une après le dernier <br />
 {
$saut[$i]=$pos[$i-1]+6; //  un calcul pour " sauter " le <br /> précédent."$pos[$i-1]" et  6  est le nombre de caractères qui compose  " <br /> "

if ($pos[$i-1]==0){$saut[$i]=0;} // juste pour le démarrage sinon " erreur"

$pos[$i]=strpos($chaine,'<br />',$saut[$i]); // on repère le <br /> suivant en reprenant le comptage en tenant compte du " saut " calculé plus haut 

$jusqua[$i]=$pos[$i]-$saut[$i];  // calcul de la fin de la ligne suivante ; ex : pour la deuxième ligne => position du 2eme "<br />" = 60 moins le saut du 1er "<br />" =31 : donc 29 de " > à < "

if ($pos[$i]==""){$jusqua[$i]=$longstring;} // juste pour la dernière ligne, comme on ce repère avec les <br />, si il n'y en à pas à la fin.... on ne pourra pas extraire la dernière ligne...

$ligne[$i]=substr($chaine,$saut[$i],$jusqua[$i]); // he ben.. là on découpe la ligne en "sautant" les <br /> jusqu'au <br /> suivant...

// Histoire de voir si tout ce passe bien.....

echo 'saut'.$i.' : '.$saut[$i].'<br>';
echo 'pos'.$i.' : '.$pos[$i].'<br>';
echo 'jusqua'.$i.' : '.$jusqua[$i].'<br>';
echo 'Ligne'.$i.': '.$ligne[$i].'<br><br>';// et là, on affiche nos lignes ainsi découpées

$i++;

 }
?>

Conclusion :


C'est mon premier post, j'espère que ça aidera......................

Je n'ai pas un très haut niveau, alors n'hésitez pas à critiquer, je suis preneur..

Byby

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.