Rechercher : dans
Par :

Récupérer date contenue dans un fichier texte

Dernière réponse le 24 oct 2007 à 11:31:53 Ablawa, le 22 oct 2007 à 20:35:35 
 Signaler ce message aux modérateurs

Bonjour,

j'ai un fichier du genre:

Nom société indice xx
Point de la caisse -
Pour la date du 22/10/07

NOM PRÉNOM SALAIRE

nom1 toto1 500
nom2 toto2 1500
nom3 toto3 2500
nom4 toto4 3500


Et j'aimerais récupérer la date "22/10/07" puis la mettre dans une variable.

je sais utiliser la commande "date" mais mon problème c'est comment faire la recherche de la date dans mon fichier.

J'ai besoin de votre aide. Merci de prendre à cœur mon problème.

Voici mon bout de code:


$fp = fopen("Fichier.txt", "r"); //lecture
if (!$fp = fopen("Fichier.txt", "r")) {
echo "Echec de l'ouverture du fichier";
exit;
} else {
//votre code;
while(!feof($fp)) { //Tant que l'on n'est pas à la fin du fichier on continue de lire le fichier.
$Ligne = fgets($fp, 255); //on récupère une ligne

//comment chercher ma date dans le fichier ??????

}
}

fclose($fp); //On ferme le fichier

Meilleures réponses pour « récupérer date contenue dans un fichier texte » dans :
MySQL - Chargement d'un fichier texte dans une table Voir Pour charger une fichier texte défini comme suit : $ tail /home/user1/test.txt 'nom1',1,9 'nom2',2,3 'nom3',3,54 'nom4',4,2 'nom5',5,9 Dans une table définie comme suit : CREATE TABLE chargertest ( ...
[MS-Dos] Ecrire dans un fichier texte en batch VoirPour écrire dans un fichier texte, il suffit d'utiliser une redirection ">" : echo texte_à_ecrire > fichier_de_sortie.txt Pour écrire à la fin d'un texte existant (concaténation) : echo "écriture a la fin du fichier ">>...
On peut récupérer le contenu d'un disque dur après un formatage VoirMythe On peut récupérer le contenu d'un disque dur après un formatage de bas niveau. Réalité VRAI Explications Voir cet article.
Fichier DAT VoirFormat DAT Un fichier DAT Un fichier .dat est un fichier de données (.DAT signifie data). En général, il s'agit d'un fichier binaire, créé par un programme et utilisable uniquement par ce programme, ce qui signifie qu'il n'est pas censé être ouvert...
Fichier TXT VoirFormat TXT Un fichier TXT est un fichier texte, c'est-à-dire un simple fichier contenant du texte au format ASCII. Pour ouvrir ou modifier un tel fichier, il suffit d'utiliser le bloc-notes ou un éditeur de texte traditionnel.

1

PhP, le 22 oct 2007 à 21:00:32

Bsr

Peut être un truc du genre

$fp = fopen("Fichier.txt", "r"); //lecture 
if (!$fp = fopen("Fichier.txt", "r")) 
{ 
	echo "Echec de l'ouverture du fichier"; 
	exit; 
} 
else 
{ 
	$modele="Pour la date du ";
	$date="";

	//votre code; 
	while(!feof($fp))  //Tant que l'on n'est pas à la fin du fichier on continue de lire le fichier. 
	{
		$Ligne = fgets($fp, 255); //on récupère une ligne 

		$pos = strpos($Ligne, $modele);
		if ($pos === 0) 
		{ 
			$date=substr($Ligne,strlen($modele),8);
			// echo $date;
			break;
		}
	} 
} 

fclose($fp); //On ferme le fichier


A adapter évidemment

PhP  
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...

Répondre à PhP

2

Ablawa, le 23 oct 2007 à 11:56:52

Merci PhP pour ta réponse. Mais chez moi cela ne stocke rien dans la variable $date.
J'aimerais comprendre un peu plus cette partie:

$pos = strpos($Ligne, $modele);
if ($pos === 0)
{
$date=substr($Ligne,strlen($modele),8);
// echo $date;
break;
}

j'ai cherché l'utilisation des fonctions mais ça ne m'a pas permis de comprendre ton code. Merci de m'éclairer davantage.

- La fonction PHP STRLEN() renvoie la longueur de la chaîne de caractères.

- STRPOS($variable,$variable1): revoie le nombre de caractère devant la lettre $variable1. Exemple: STRPOS ("YBET informatique,"i") renvoie le nombre 5. Si le résultat est 0, le caractère n'est pas repris dans la chaîne.

- SUBSTR (chaine, numero_depart [,longueur] ) récupère longueur caractères sans la chaîne à partir du numero de départ.

Répondre à Ablawa

3

spidag, le 23 oct 2007 à 12:02:13

Pour strpos, c'est pas 0 mais faux ...
Ca revient presque au meme sauf qu'avec les === on differencie les FALSE et 0.

Répondre à spidag

4

Ablawa, le 23 oct 2007 à 12:23:15

Si je comprends bien "Spidag", ça doit s'écrire comme ceci:

if ($pos ===FALSE)

Répondre à Ablawa

5

Ablawa, le 23 oct 2007 à 13:10:28

Ci-dessous le code corrigé:

$filename="fichier.txt";
$fp = fopen($filename, "r"); //lecture
if (!$fp = fopen($filename, "r"))
{
echo "Echec de l'ouverture du fichier";
exit;
}
else
{
$modele="Pour la date du";
$date="";

while(!feof($fp)) //Tant que l'on n'est pas à la fin du fichier on continue de lire le fichier.
{
$Ligne = fgets($fp, 255); //on récupère une ligne

$lignedate = strstr($Ligne, $modele);
echo $lignedate; //Et ça m'affiche bien la ligne contenant la date: "Pour la date du 26/05/2006"

//Maintenant reste à récupérer uniquement la date
?????????????????????????????????????
break;

}
}

fclose($fp); //On ferme le fichier



Chers "PHPmen", j'attends impatiemment vos coups de pouce. Merci d'avance.

Répondre à Ablawa

6

Ablawa, le 23 oct 2007 à 13:13:59

Est-ce qu'on ne peut pas utiliser les expressions régulières pour récupérer la date sur la ligne: "Pour la date du 26/05/2006"

Répondre à Ablawa

7

 Ablawa, le 24 oct 2007 à 11:31:53

Chers amis, j'ai finalement utilisé le code de monsieur "PhP", avec quelques retouches. Merci à vous tous.
Voici la solution finale:

<?
$fp = fopen("Fichier.txt", "r"); //lecture
if (!$fp = fopen("Fichier.txt", "r"))
{
echo "Echec de l'ouverture du fichier";
exit;
}
else
{
$modele="Pour la date du ";
$date="";

//votre code;
while(!feof($fp)) //Tant que l'on n'est pas à la fin du fichier on continue de lire le fichier.
{
$Ligne = fgets($fp, 255); //on récupère une ligne

$pos = strstr($Ligne, $modele);
$date=substr($pos,strlen($modele),12);
// echo $date;
break;

}
}

fclose($fp); //On ferme le fichier
?>

Répondre à Ablawa
Collection CommentÇaMarche.net