Parser un fichier texte dynamique en PHP

Résolu/Fermé
ballow Messages postés 5 Date d'inscription mardi 26 août 2014 Statut Membre Dernière intervention 17 octobre 2014 - Modifié par ballow le 26/08/2014 à 16:42
Zep3k!GnO Messages postés 2025 Date d'inscription jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 - 27 août 2014 à 11:30
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 jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
26 août 2014 à 17:56
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 mardi 26 août 2014 Statut Membre Dernière intervention 17 octobre 2014
26 août 2014 à 21:12
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 jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
27 août 2014 à 10:01
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 mardi 26 août 2014 Statut Membre Dernière intervention 17 octobre 2014
27 août 2014 à 11:17
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 jeudi 22 septembre 2005 Statut Membre Dernière intervention 18 novembre 2015 200
27 août 2014 à 11:30
Pas de soucis, bonne journée !
0