Parser un fichier texte dynamique en PHP

Résolu
ballow Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour tous le monde,

Voilà mon (petit) problème...:

Je voudrais extraire des données depuis un fichier texte qui se trouve sur un site distant : http://www.swpc.noaa.gov/ftpdir/latest/daypre.txt

Seulement ce fichier est mis à jour tous les jours, la mise en page ne change pas mais les données, elles, changent.

Ce qui m'intéresse ici est d'intégrer sur ma page web la première valeur après "Class_M".
Je privilégie l'intégration en PHP et non en javascript...

J'ai déjà regarder les fonctions fget et regex mais (je n'ai peut-être pas compris) je n'y arrive pas...

Avec fget :
Je n'arrive pas à lui dire qu'il faut qu'il aille à la 57ème ligne et qu'il me prenne les 27 et 28ème caractères.

avec regex :
Les valeurs changeant tous les jours, je n'arrive pas à trouver la bonne expressions....

Quelqu'un pourrait-il m'aider ?

Je précise que je suis qu'un simple amateur en ce qui concerne mon niveau de PHP...

Merci d'avance :)
A voir également:

3 réponses

Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
Ce qu'il faut savoir pour les regexp c'est si la structure du fichier change ou pas.
Si c'est simplement les valeurs qui sont modifiées et qu'elles sont toujours sur une ligne, séparées par des espaces ou des tabulations ou autres caractères pas de soucis !
Voici un exemple d'expression régulière qui match avec ton fichier d'exemple :

Class_M[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^0-9]+([0-9]+)\r\n
0
ballow Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Zep3k!GnO de ta réponse rapide :)

Merci pour le renseignement, avec ce que tu me dit, ça me rassure.

J'ai essayé ton expression régulière mais j'ai une erreur de type Delimiter must not be alphanumeric or backslash...

je me suis peut-être tromper dans l'écriture :

<?php
if (preg_match("Class_M[^0-9]+([0-9]+)\r\n", "http://www.swpc.noaa.gov/ftpdir/latest/daypre.txt"))
{
echo 'Le mot que vous cherchez se trouve dans la chaîne';
}
else
{
echo 'Le mot que vous cherchez ne se trouve pas dans la chaîne';
}
?>


Par la suite j'aimerais intégrer le résultat du match dans une variable $toto.
A quel niveau du code ci-dessus je dois lui dire "maintenant que tu as trouvé ma valeur, met la dans la variable toto" ?

Merci beaucoup ! :)
0
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
Oui, tu as un problème d'écriture, si tu regardes la doc de preg_match(https://www.php.net/manual/fr/function.preg-match.php tu vois que le pattern doit être délimité. De plus tu n'as pas suivi la regexp que je t'avais envoyé. Je viens de tester et modifier rapidement ton script pour que tu vois ce qu'il faut faire :

<?php
$content = file_get_contents("http://www.swpc.noaa.gov/ftpdir/latest/daypre.txt"); //récupération du contenu du fichier.

if (preg_match("/Class_M[^0-9]+([0-9]+)[^0-9]+([0-9]+)[^0-9]+([0-9]+)/", $content, $matches))
{
echo 'Le mot que vous cherchez se trouve dans la chaîne';
echo '<br/>Valeur 1 : '.$matches[1];
echo '<br/>Valeur 2 : '.$matches[2];
echo '<br/>Valeur 3 : '.$matches[3];
}
else
{
echo 'Le mot que vous cherchez ne se trouve pas dans la chaîne';
}
?>
0
ballow Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour bonjour !

Alors je viens de tester le code, et bien... C'est PARFAIT :)

Merci beaucoup, en effet, je m'étais bien tromper dans la syntaxe :-/
On va mettre ça dans la fatigue, à force d'avoir le nez dedans on passe à coté de pas mal de choses...

Merci beaucoup Zep3k!GnO !

Bonne journée à toi :)
0
Zep3k!GnO Messages postés 2025 Date d'inscription   Statut Membre Dernière intervention   200
 
Pas de soucis, bonne journée !
0