Récupérer date contenue dans un fichier texte

Résolu/Fermé
Ablawa
Messages postés
15
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
24 octobre 2007
- 22 oct. 2007 à 20:35
Ablawa
Messages postés
15
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
24 octobre 2007
- 24 oct. 2007 à 11:31
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

7 réponses

PhP
Messages postés
1767
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
607
22 oct. 2007 à 21:00
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
0
Ablawa
Messages postés
15
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
24 octobre 2007

23 oct. 2007 à 11:56
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.
0
pour strpos, c'est pas 0 mais faux ...
Ca revient presque au meme sauf qu'avec les === on differencie les FALSE et 0.
0
Ablawa
Messages postés
15
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
24 octobre 2007

23 oct. 2007 à 12:23
Si je comprends bien "Spidag", ça doit s'écrire comme ceci:

if ($pos ===FALSE)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ablawa
Messages postés
15
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
24 octobre 2007

23 oct. 2007 à 13:10
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.
0
Ablawa
Messages postés
15
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
24 octobre 2007

23 oct. 2007 à 13:13
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"
0
Ablawa
Messages postés
15
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
24 octobre 2007

24 oct. 2007 à 11:31
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
?>
0