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 :

récupérer une ip et son port avec preg_match_all [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    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
    Points : 65
    Points
    65
    Par défaut récupérer une ip et son port avec preg_match_all
    Bonjour,

    J'ai créé un script/regex permettant de récupérer des adresses ip et de les ajoutées dans une base.

    Je met par exemple le texte suivant dans mon formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    222.344.32.34:4567io bla bla bla avec ce 123.543.566.44:4540 etc
    et cela extrait uniquement les adresses ip.

    Script:

    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
     
    <?php
     
    $filename = "../dbconnect.php";
    if (file_exists($filename)) include($filename);
     
    if (isset($_REQUEST['text']) && !empty($_REQUEST['text'])) {
      // recupération du texte
      $text = $_REQUEST['text'];
    }
     
    // extraction ip
    if (!empty($text)) {
      $res = preg_match_all(
        "/[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}/i",
        $text,
        $matches
      );
     
      if ($res) {
        foreach(array_unique($matches[0]) as $ip) {
     
    $insertionBase = mysql_query("INSERT IGNORE INTO listeIp (adresseIp, DateInsertion) VALUES ('$ip', now())") or die ('Erreur SQL...veuillez contacter l\'administrateur'.mysql_error());   
     
        echo $ip . "<br />";
        }
      }
      else {
        echo "Aucune adresse ip trouvée";
      }
    }
     
    ?>
    Cela fonctionne bien...Par contre, maintenant j'aurai souhaité également récupérer le port associé à l'ip.

    Il y a 3 situations possibles:

    - Soit lorsque je récupère le texte, l'ip est séparée du port par un double point (111.111.111.11:1234)
    - soit par un espace (11.111.11.11 2345)
    - soit par 2 espacements (12.12.12.12 22)

    Est il possible de récupérer le port de la même manière que l'ip?

    j ai testé en faisant comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      "/[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}[  : ]?[0-9]{1,5}$/i",
    (cela fontionne s'il y a un espace ou un double point, mais avec 2 espaces cela retourne rien)

    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "/[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}[\s\s: ]?[0-9]{1,5}/i",
    Dans ce 2eme cas, cela me retourne bien l'ip mais pas le port.

    Je remplace les espaces par _ dans mon exemple ci dessous.

    Exemple:

    Je met 111.111.111.111__33 et cela me retourne 111.111.111.111

    Qu'y a t-il comme erreur?

    Merci

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 179
    Points : 202
    Points
    202
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(?:\s{1,2}|:)\d{1,5}/

  3. #3
    Membre habitué
    Avatar de savageman86
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 105
    Points : 199
    Points
    199
    Par défaut
    Presque sielfried, tu as oublié que le port est facultatif !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /(\d{1,3}(?:\.\d{1,3}){3})((?:\s{1,2}|:)\d{1,5})?/

  4. #4
    Membre du Club
    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
    Points : 65
    Points
    65
    Par défaut
    Merci pour votre aide, cela fonctionne a merveille!

    Bonne continuation

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2008, 10h23
  2. [Reflexion] Comment récupérer une class via son chemin python
    Par anthyme dans le forum Général Python
    Réponses: 2
    Dernier message: 27/12/2007, 13h16
  3. [HTML] comment récupérer une ligne d'un tableau avec HTML?
    Par jaafarerraji dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 01/10/2007, 00h21
  4. Récupérer une image de son formulaire
    Par cdevl32 dans le forum Langage
    Réponses: 6
    Dernier message: 06/09/2007, 23h56
  5. [EJBQL] Récupérer une donnée dans un EJB avec EJB/QL
    Par pblb62 dans le forum Java EE
    Réponses: 3
    Dernier message: 28/03/2006, 11h53

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