IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Regex filtrant des ip [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 152
    Par défaut Regex filtrant des ip
    Bonjour,

    Je suis en train d'essayer de récupérer des informations d'un fichier texte.

    J'essaye d'extraire de ce fichier texte, les adresses ip avec leurs ports avec un regex mais je n'y arrive pas...Je dois faire une erreur...

    Voici le code présent dans mon fichier texte:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script type="text/javascript">e=9;j=8;x=7;a=2;n=5;d=0;s=6;v=1;l=3;i=4;</script>
    <tr><td>
    193.174.67.187<script type="text/javascript">document.write(":"+l+v+a+i)</script></td><td>May-27, 23:00</td></tr>
    <tr><td>
    91.90.17.205<script type="text/javascript">document.write(":"+j+d)</script></td><td>May-27, 23:01</td></tr>
     
    etc...
    Comme vous voyez, il faudra que je m'y prenne en 2 etapes en faisant d'abord l'extraction de tout ce qui est du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    91.90.17.205<script type="text/javascript">document.write(":"+j+d)
    194.65.1.250<script type="text/javascript">document.write(":"+n+n+l)
    Puis il faudra que je fasse remplacer les lettres par leurs chiffres correspondants...

    J'ai développé le regex suivant mais visiblement il ne fonctionne pas car cela retourne toujours:"Aucune données à extraire!"...Si vous pouviez m'aider je vous en serai reconnaissant car je cale depuis hier aprem la dessus...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php 
    //fichier dulequel les ip seront extraites
    $fp =  file("test.txt");
     
    foreach($fp as $line) {
    $res = preg_match_all(
     
    "/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}<script type=\"text\/javascript \">document.write(\"[\ |:	]\"{1,2}[+a-x]{1,5})/i", 
        $line,
        $matches
    );
    if ($res) {
    foreach($matches[0] as $res) {
        echo "Extraction : ", $res, "\n <br>";
        list($ip, $port) = split("[\ |:	]{1,2}", $res);
        echo "dont l ip est: ", $ip, "\n";
        echo "et le port : ", $port, "\n\n <br><br>";
     
    }
    }
    else
    {
    echo'Aucunes données à extraire!';
    }
    }
    ?>

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2007
    Messages : 215
    Par défaut
    Salut,

    faudrait pas échapper les parenthèses ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}<script type=\"text\/javascript \">document.write\(\"[\ |:	]\"{1,2}[+a-x]{1,5}\)/i"
    et je comprend pas trop le

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 152
    Par défaut
    Bonjour xclam

    Merci pour ton aide...Mais cela ne fonctionne toujours pas...

    Concernant le [\ |: ]
    double point, espace, double espace et un espace un peu scpécial que j'avais rencontré dans un de mes fichier qui équivalait dans le fichier texte à une sorte de rectangle

    En fait j'aurai dû/pu rajouter un | après le double point...

  4. #4
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    marrant comme exo ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?php
    $aContent='
    <script type="text/javascript">e=9;j=8;x=7;a=2;n=5;d=0;s=6;v=1;l=3;i=4;</script>
    <tr><td>
    193.174.67.187<script type="text/javascript">document.write(":"+l+v+a+i)</script></td><td>May-27, 23:00</td></tr>
    <tr><td>
    91.90.17.205<script type="text/javascript">document.write(":"+j+d)</script></td><td>May-27, 23:01</td></tr>
    ';
     
     
    $aMasquePortNumber='#([a-z])=([0-9]);#';
    preg_match_all($aMasquePortNumber, $aContent, $aMatchesPortNumber);
     
    // PHP5 seulement
    $aListeConversionPort=array_combine($aMatchesPortNumber[1], $aMatchesPortNumber[2]);
     
    /** PHP4 **
    $aListeConversionPort=array();
    foreach($aMatchesPortNumber[1] as $k=>$key) {
    	$aListeConversionPort[$key]=$aMatchesPortNumber[2][$k];
    }
    ** /PHP4 **/
     
    $aMasque='#[^0-9]((?:[0-9]{1,3}\.){3}[0-9]{1,3})[^0-9][^+]+\+([^\)]+)\)#U';
    preg_match_all($aMasque, $aContent, $aMatches);
     
    $aListeConversionPort['+']='';
     
    foreach($aMatches[1] as $k=>$value) {
    	$IP=$value;
    	$port=$aMatches[2][$k];
    	$port=str_replace(array_keys($aListeConversionPort), array_values($aListeConversionPort), $port);
    	echo $IP.':'.$port.'<br>';
    }
     
    ?>
    affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    193.174.67.187:3124
    91.90.17.205:80

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 152
    Par défaut
    Ca fonctionne! Merci pour cette incroyable aide!

    J ai un peu du mal à suivre avec ton regex, mais je vais essayer de tout comprendre

    Bonne journée et merci!

  6. #6
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Par défaut
    si t'as besoin d'explications, n'hésite pas a demander ;o)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [RegEx] Regex trouvé des chiffres entre parenthèse
    Par narayana_seb dans le forum Langage
    Réponses: 2
    Dernier message: 15/11/2007, 19h51
  2. [regex] "Refus" des espaces
    Par alband85 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/07/2007, 10h26
  3. [regex] Récupérer des liens hypertextes
    Par smarties dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 15/02/2007, 19h12
  4. [Regex] gestion des accents dans un mot
    Par joseph_p dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 10/05/2006, 09h04
  5. [Regex] Rechercher des *
    Par gregb34 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 09/05/2006, 22h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo