Recherche dans un fichier texte

vitalefa Messages postés 19 Date d'inscription   Statut Membre Dernière intervention   -  
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   -
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 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
Salut,

Regarde du coté des expressions régulières.
-1
vitalefa
 
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 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
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