Fonction mail php et variable

gégé25 -  
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je vous expose mon problème je souhaite envoyer par mail les 5 dernières lignes d'un fichier texte, j'ai donc ce code :

<?php

	//fichier à traiter
	$text = file_get_contents('lol.txt');
	//nombre d'occurences (ici, de lignes) à récupérer en partant de la fin
	$nb = 5;


	$end = 0;
	$count = strlen($text);
	for($i=0;$i<$nb;$i++){
   $strrpos = strrpos($text, 10, -$end);
   $end = $count - $strrpos + 1;
	}

	echo substr($text, $strrpos);
	
	mail('lol@aol.com', 'sujet', 'text');
	
	
?>


Il me récupère bien les 5 dernières lignes car l'echo les marque bien mais comment les envoyer ensuite par mail ? il faudrait en faite dans message(text) pouvoir mettre
echo substr($text, $strrpos)

mais comment faire pour la fonction mail me récupère le contenu de ces variables ?

merci d'avance de votre aide.

cordialement
A voir également:

4 réponses

Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

essaie :
	$text = substr($text, $strrpos);
	mail('lol@pouet.com', 'sujet', $text);
0
gégé25
 
merci beaucoup pour la réponse maintenant j'ai un nouveau problème j'ai besoin d'ajouter du texte récupérer dans une autre variable à mon mail j'ai donc voulu faire comme cela :

<?php

	//fichier à traiter
	$text = file_get_contents('lol.txt');
	//nombre d'occurences (ici, de lignes) à récupérer en partant de la fin
	$nb = 5;


	$end = 0;
	$count = strlen($text);
	for($i=0;$i<$nb;$i++){
   $strrpos = strrpos($text, 10, -$end);
   $end = $count - $strrpos + 1;
	}

	//echo substr($text, $strrpos);
	
	$text = substr($text, $strrpos);
	$text2 = "lol test2" ;
	mail('lol@aol.com', 'sujet', $text . nl2br($text2));
	
	
?>


La variable text2 s'écrit bien mais c'est sur la meme ligne or je voulais passer une ligne avec le nl2br (meme deux ou trois dans l'absolu).

Avez-vous une idée ?

cordialement
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

pour nl2br(), il faudrait que tu aies une "new line" à transformer en <br/> ce n'est pas le cas et de toute façon ton mail n'est pas en HTML donc c'est un caractère de fin de ligne/nouvelle ligne qu'il te faut :
	$text = substr($text, $strrpos);
	$text = $text.PHP_EOL."lol test2" ;
	mail('lol@aol.com', 'sujet', $text);

et tu mets autant de PHP_EOL que tu veux.
0
gégé25
 
merci encore pour cette aide, et je vais encore t'embêter car maintenant je souhaiterais récupérer les 5 dernières lignes de deux fichiers texte or ma variable
 $text = substr ($text, $strerpos); 

je pensais juste faire une copier coller de mon code mais bien sur les fonctions substr et strrpos seront attribués deux fois ou trois ou quatre donc mon script l'affiche que le la première variable ici $text.

comment pourrais-je faire pour que le script ouvre tous les fichiers text eet ensuite applique le même code qui reprend les 5 dernières lignes du programme pour ensuite afficher les 5 dernières lignes de cinq fichiers texte dans le même e-mail ?

donc à la fin $text= $text1.PHP_EOL.$text2.PHP_EOL.$text3;

qui m'afficherait les 5 dernières lignes de $text1 , $text2 et $text3 avec un espace entre ces 3 variables .

je ne sais pas si je me suis bien fait comrpendre .

cordialement
0
Dalida Messages postés 6728 Date d'inscription   Statut Contributeur Dernière intervention   922
 
salut,

j'ai pas testé, si ça passe direct c'est du miracle !
<?php
	$text = '';
	$file_paths = array('file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', 'file5.txt');

	array_walk($file_paths, 'get_last_lines', $text);

	function get_last_lines($value, $key, &$text)
	{
		$content = file_get_contents($value);
		$content = array_slice(explode(PHP_EOL, $value), -5, 5);
		$text .= implode(PHP_EOL, $content).PHP_EOL.PHP_EOL;
	}
?>
0