PHP détection de saut de ligne fichier txt

Petit nouveau ! | 2 Messages

19 mai 2009, 17:18

Salut a tous,

J'ai un soucis :

Je recupère toutes les informations d'un fichier txt
$ouvre=fopen("./texte.txt","r"); // ouverture fichier en lecture "r"
			while (!feof ($ouvre))         // tant que pas en fin de fichier
			{
		  		
				$ligne = fgets($ouvre);
                                ...
                                traitement
                                ...
                          }
je possede une variable que je veut incrémenter lorsqu il y a un changement de paragraphe

exemple de fichier txt

Code : Tout sélectionner

%0 Case %A Moi %A PasMoi , emer %D 1971 %T Valdez v. Black %B F.2d %I 10th Circ. %V 446 %P 1071 %! Valdez v. Black %0 Generic %A Moi ,bobolach %A PasMoi , emer %D 1974 %T Geophysical Research Letters %B Sedimentary Geology %C Washington, D.C. %I American Geophysical Union %6 Vol. 1 (May 1974)- %9 serial %! Geophysical Research Letters %@ 0094-8276 %L QE500 .G37 %K Geophysics Periodicals Planets Periodicals Lunar geology Periodicals %Z Description based on: vol. 13, no. 4, Apr. 1986. Semimonthly, 1992- Monthly, -1991 %+ American Geophysical Union, 1909 K St. N.W., Washington, DC 20006
Je n'arrive pas a détecter les sauts de lignes, meme avec les strcmp, strstr, empty, donc la j'ai vraiment un soucis.

Merci d'avance

Mammouth du PHP | 991 Messages

19 mai 2009, 18:16

les sauts de lignes dans un fichiers texte peuvent être trouvé par des retour de chariots :

Code : Tout sélectionner

\n\r \n // Pas sur : \r
Test l'un de ces paramètres ;)

Bye Hawk
DevOps, Symfony4, Hoa

Petit nouveau ! | 2 Messages

20 mai 2009, 13:30

Salut, merci de ton aide.

Le problème est qu'il y a des \n a toutes les lignes, il faut juste que je trouve les sauts de ligne

Donc la méthode que j'avais trouver est d'incrémenter une variable et lorsqu'elle vaut 3 ceci indiquai un saut de ligne mais ce n'est pas super propre.

Est-ce la seule solution??

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 mai 2009, 12:39

En fait, il ne faut pas vérifier si la ligne contient un "\n", car en dehors de la dernière elles en auront toutes. Il faut vérifier si la ligne NE contient QUE un "\n" ou "\r\n" pour windows. Dans ce cas, tu sais que tu as affaire à un saut de ligne :)

A toi de voir ensuite si tu dois compter chaque saut de ligne, ou si 3 sauts de lignes consécutifs ne doivent compter que pour un seul.

Tu peux aussi utiliser la fonction trim() sur chaque ligne, et si celui-ci est vide, c'est que ta ligne est vide (ou ne contient que des espaces/tabulations), mais on peut supposer d'après ton exemple qu'il s'agira bien d'une ligne vide).
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

21 mai 2009, 13:26

Merci beaucoup,

ça marche impeccablement.

Voici le code final pour ceux qui pourrai avoir besoin

Code : Tout sélectionner

$ligne = fgets($ouvre); $saut = trim($ligne); if(empty($saut)) { $saut_de_ligne++; if($saut_de_ligne == 3) { $saut_de_ligne = 0; $num_paragraphe++; echo("/*********** autre § *****************/ <br />"); } }
Bonne prog a tous !!!