Recherche dans un fichier texte

Fermé
vitalefa Messages postés 19 Date d'inscription lundi 13 janvier 2014 Statut Membre Dernière intervention 18 mai 2014 - 11 févr. 2014 à 08:53
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 13 févr. 2014 à 19:35
Bonjour, suite à de nombreuses recherche sur le web je n'ai pas trouvé mon bonheur c'est pourquoi je poste ce message.

J'ai un fichier de ma configuration ip ("ifconfig > ip.txt"), mais ce que je veux c'est récupérer le masque de sous-réseau de ce fichier texte et uniquement le masque de sous-réseau pour l'exploiter plus tard avec la fonction explode() qui me permettra de calculer l'adresse de broadcast, nombre de sous-réseau etc...

Avez-vous une petite idée ? En tout cas ce serai vraiment sympa car je sui dessus depuis pas mal de temps.

Je vous remercie d'avance


A voir également:

2 réponses

mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
11 févr. 2014 à 10:01
Bonjour,

Ca dépend de la taille du fichier....

Si pas trop gros (maxi 1 à 2 Mo):
- faire un file_get_contents
- faire un "explode" sur les lignes avec le caractère "\n"
- ca donne un tableau où chaque enregistrement est une ligne de ce tableau - faire un foreach($tableau AS $ligne)
- si séparateur est ";" faire un explode de $ligne sur ";"
- rechercher l'item de ligne contenant l'adresse IP

Ca vous ira comme idée de départ?

A+
0
vitalefa Messages postés 19 Date d'inscription lundi 13 janvier 2014 Statut Membre Dernière intervention 18 mai 2014
11 févr. 2014 à 13:10
Hello mpm93, merci pour cette réponse rapide alors oui sa me va super mais une petite question, mon fichier de configuration de ma station ip est comme cela (il ne va jamais dépasser plus de 1Mo) :

eth0 inet addr:192.168.1.101 Bcast:192.168.1.255 Mask:255.255.255.0
blablablablablalbablalball bplpeasgp:013r945823
sdnkngksfn:237563273



Comme j'ai compris tu me demande de faire en gros ce code:

$iptxt=file_get_contents('ip.txt');

$tableauIfconfig= explode("\n", $iptxt);


foreach($tableauIfconfig AS $ligne)
{
//je ne sais pas quoi mettre dans mon test, tes deux derniers points me semble très flou !
if()

}
0
vitalefa Messages postés 19 Date d'inscription lundi 13 janvier 2014 Statut Membre Dernière intervention 18 mai 2014
11 févr. 2014 à 13:19
Car je veux récupérer que la ligne de mon fichier où c'est écris :
eth0 inet addr:192.168.1.101 Bcast:192.168.1.255 Mask:255.255.255.0

C'est super sympa de m'aider merci vraiment =)
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
12 févr. 2014 à 00:02
Salut,

Regarde du coté des expressions régulières.
-1
Bonjour Joos voici le code que j'ai réussi à mettre dans mon script, la chose à faire maintenant c'est spécifié que c'est le masque qu'il faut prendre.... Une idée ?



<?php
$contenu="ip.txt";
$fichier = file ($contenu);
$Regex="#Masque:#i";

for($i=0;$i<=0;$i++)
{
if(preg_match($Regex, $fichier[$i]))
{
echo "Preg match a bien fait son boulot";
}
}
?>

Merci et bonne journée !






0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 13/02/2014 à 19:37
Le but en te disant d'utiliser une expression régulière c'est en premier lieu pour éviter d'utiliser une boucle (performance).

Donc si j'ai bien compris, tu veux récupérer uniquement le masque de sous réseau, alors si tout les masques de sous réseaux sont précédés de la chaîne "Mask:", et que la chaîne "Mask:" n'existe que pour identifier un masque de sous réseau, j'imagine quelque chose comme ceci ...

<?php
$content = file_get_contents('doc.txt');
$regex = '#Mask:([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})#';

preg_match_all($regex, $content, $masks);
$masks = array_map(
   function($line) {
    return substr($line, 5);
   }, 
   $masks[0]
  );

var_dump($masks);
0