Récupérer date contenue dans un fichier texte [Résolu/Fermé]

Signaler
Messages postés
15
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
24 octobre 2007
-
Messages postés
15
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
24 octobre 2007
-
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

Messages postés
1771
Date d'inscription
lundi 11 décembre 2000
Statut
Membre
Dernière intervention
23 décembre 2009
601
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
Messages postés
15
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
24 octobre 2007

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

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

if ($pos ===FALSE)
Messages postés
15
Date d'inscription
lundi 23 juillet 2007
Statut
Membre
Dernière intervention
24 octobre 2007

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

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

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
?>