Demande d'aide sur la recherche d'une date dans un texte
dioudiallo
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
codeurh24 Messages postés 760 Date d'inscription Statut Membre Dernière intervention -
codeurh24 Messages postés 760 Date d'inscription Statut Membre Dernière intervention -
bonjours je suis nouveau dans ce forum et j'avais un probleme dans mon projet.
en effet j'essai de creer un programme en php qui va me permettre de rechercher des dates dans un fichier.text.
donc une fois une date trouver on l'affiche et on affiche aussi les lignes suivent la date jusqu'a la prochaine date trouvé. et le programme devrais effectuer le meme processus pour tous les dates trouves.
les dates sont au format jour mois heure minute seconde année.
le probleme c'est que je connais pas de fonction pour rechercher une date dans un fichier texte.
et merci d'avance.
en effet j'essai de creer un programme en php qui va me permettre de rechercher des dates dans un fichier.text.
donc une fois une date trouver on l'affiche et on affiche aussi les lignes suivent la date jusqu'a la prochaine date trouvé. et le programme devrais effectuer le meme processus pour tous les dates trouves.
les dates sont au format jour mois heure minute seconde année.
le probleme c'est que je connais pas de fonction pour rechercher une date dans un fichier texte.
et merci d'avance.
A voir également:
- Demande d'aide sur la recherche d'une date dans un texte
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Comment faire une recherche à partir d'une photo - Guide
- Transcription audio en texte word gratuit - Guide
- Excel cellule couleur si condition texte - Guide
- Je recherche une chanson - Guide
4 réponses
Bonjour
il existe un outil repris dans de nombreux langages, permettant des recherches poussées dans du texte: les expressions régulières ou Regex.
Je ne fais pas de PHP, mais très vite j'ai trouvé
https://www.commentcamarche.net/contents/803-php-expressions-regulieres
il existe un outil repris dans de nombreux langages, permettant des recherches poussées dans du texte: les expressions régulières ou Regex.
Je ne fais pas de PHP, mais très vite j'ai trouvé
https://www.commentcamarche.net/contents/803-php-expressions-regulieres
Salut, je trouve que c'est pas très clair ta demande.
Je fourni une possible solution sans expression régulière.
En attendant d'autre meilleurs réponses.
Je fourni une possible solution sans expression régulière.
En attendant d'autre meilleurs réponses.
<?php
if( !isset($_GET['typeRechercheET']) )
{
$_GET['typeRechercheET'] = 'off';
}
// recupere le fichier log si il existe
$fileTxt = @file_get_contents('texte.log');
// si le fichier log n'existe pas on creer un texte d'exmeple
if( strlen($fileTxt) < 3 )
{
echo '<b style="color:#F64">Attention le fichier log n\'existe pas</b><br />';
$fileTxt = 'Mon Apr 18 12:01:57 2016'."\r\n";
$fileTxt .= 'Mon Apr 19 13:05:15 2015'."\r\n";
$fileTxt .= 'Thu Apr 20 17:04:40 2016'."\r\n";
$fileTxt .= 'Sun Apr 21 17:51:52 2016'."\r\n";
$fileTxt .= 'Sun Apr 21 17:51:52 2016'."\r\n";
}else{
echo '<b style="color:#090">Le fichier log est bien pris en compte</b><br />';
}
// on a un texte avec des dates ligne par ligne et on modifie les retour a la ligne
// pour respecter les 2 normes
$fileTxt = str_replace("\r\n", "\n", $fileTxt);
// on recupere les lignes une par une dans un tableau
$tab_dates = explode("\n", $fileTxt);
// si la recherche est en cour
if( isset($_GET['recherche']) )
{
foreach( $tab_dates as $valeur ) // avec le tableau on compare une ligne par une ligne
{
$tab_motsRechercher = explode(" ", $_GET['recherche']);
// recherche multiple séparer par un espace Exemple: "sun mon"
$correspondance = true;
foreach( $tab_motsRechercher as $mot)
{
// si un ligne contient le mot il sera affiché
if( strpos( strtolower($valeur) , strtolower( $mot ) ) !== false and $correspondance === true )
{
if( $_GET['typeRechercheET'] != 'on' ) //affiche les resultats avec un type de recherche en OU
{
echo $valeur."<br />";
continue(2); // pour sortir du foreach
}else{
$correspondance = true;
}
}else{
$correspondance = false; // permet la recherche en Et car si un des resultat ne corespond il est éliminé
continue(2); // pour sortir du foreach (évite les boucles si le resultat (correspondance) est deja negatif)
}
}
// affiche les resultats avec un type de recherche en ET
if( $correspondance and $_GET['typeRechercheET'] == 'on')
{
echo ".".$valeur."<br />";
}
}
}
// En dessous il y a 2 lignes qui permetes de
// mettre en forme une date anglaise au format
// de son choix
//$timestamp = strtotime("Mon Apr 18 16:05:16 2016");
//echo date("D M H:m:s Y", $timestamp );
?>
<br />
<br />
<form action="" method="get">
<label>Recherche en "ET"</label>
<input type="checkbox" name="typeRechercheET"/>
<label>Entrer un mot de recherche</label>
<input type="text" name="recherche"/>
</form>
Comme en math, elles permettent de "factoriser" une clause, par exemple, je cherche trois séquences d'une lettre et d'un chiffre
je peux dire "1lettre1chiffre1lettre1chiffre1lettre1chiffre" : ou alors dire (1lettre1chiffre)3 fois :
Mais en même temps, tout ce qui est entre un jeu de () est capturé et peut être récupéré dans le code, donc dans l'exemple ci dessus je pourrai obtenir en résultat de la regex les 3 séquences