Fonction mail php et variable

Fermé
gégé25 - 14 avril 2009 à 18:58
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 15 avril 2009 à 14:07
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 mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
14 avril 2009 à 19:05
salut,

essaie :
	$text = substr($text, $strrpos);
	mail('lol@pouet.com', 'sujet', $text);
0
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 mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
15 avril 2009 à 07:17
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
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 mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 921
15 avril 2009 à 14:07
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