[résolu] Regexp ( IP:port )

Regexp ( IP:port ) [résolu] - PHP - Programmation

Marsh Posté le 10-05-2004 à 17:45:52    

Bonjour,  
 
j'ai un nouveau problème. j'ai une chaine contenant du texte et une adresse IP a extraire de cette chaine. Je ne connais pas la longueur de la chaine ni de l'ip, il me faut donc utiliser une regexp.
 
Seulement je n'en vient pas a bout, voici l'algorithme de la fonction.
Si une ip est trouvée dans $chaine alors mettre cette ip dans $ip.
 
L'ip que je cherche a extraire sera de la forme : ip:port (195.4.17.142:27960 par exemple
 
Une idée de la regexp ?
Merci


Message édité par wouf le 11-05-2004 à 10:17:42
Reply

Marsh Posté le 10-05-2004 à 17:45:52   

Reply

Marsh Posté le 10-05-2004 à 17:59:29    

Voici ma tentative (sans les retours a la ligne) ...  

Code :
  1. if (ereg('^([0-9]{1,2}|[01][0-9]{2}|2[0-4][0-9]|25[0-5])\.
  2. ([0-9]{1,2}|[01][0-9]{2}|2[0-4][0-9]|25[0-5])\.
  3. ([0-9]{1,2}|[01][0-9]{2}|2[0-4][0-9]|25[0-5])\.
  4. ([0-9]{1,2}|[01][0-9]{2}|2[0-4][0-9]|25[0-5])$',$body,$tab))
  5.     {
  6.      $ip= $tab[0];
  7.     }


 
... mais ca ne marche pas et en plus il manque le port (la regexp a été trouvée via google).


Message édité par wouf le 11-05-2004 à 10:13:06
Reply

Marsh Posté le 11-05-2004 à 09:36:56    

please...
;-)

Reply

Marsh Posté le 11-05-2004 à 09:47:24    

pit-être ca
 
([0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}:?[0-9]{0,5})
 
un nombre de une à trois fois suivi d'un point suivi d'un nombre de une à trois fois, suivi d'un point, suivi d'un nombre de une à trois fois, suivi de 0 ou 1 fois ":" suivi de 0 à 5 nombres

Reply

Marsh Posté le 11-05-2004 à 10:14:05    

Merci art_dupond, seulement sur ce genre d'ip: 194.126.124.35:27960 ta regexp ne récupère que 194.126.124
 
(rappel : j'utilise la fonction ci dessus et donc je récupère l'ip dans $ip, l'erreur peut peut etre venir de $ip=tab[0] etant donné que je ne comprend pas tres bien ce que renvoie ereg)

Reply

Marsh Posté le 11-05-2004 à 10:16:44    

méa culpa..; j'ai pas réfléchi longtemps !
 
en fait il manque une série de chiffre a ta regexp...
 
merci encore, voici la bonne fonction avec la bonne regexp :

Code :
  1. if (ereg('([0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}:?[0-9]{0,5})',$body,$tab))
  2.     {
  3.      $ip= $tab[0];
  4.     }

Reply

Marsh Posté le 11-05-2004 à 10:17:58    

j'ai oublié de gérer un nombre (mais t'aurais pu le voir aussi)
 
 
 
([0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}:?[0-9]{0,5})

Reply

Marsh Posté le 11-05-2004 à 10:18:17    

yop ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed