Avatar billede per-d Nybegynder
18. januar 2010 - 20:22 Der er 3 kommentarer og
1 løsning

Extract IP adresse

Hej,

Nogen der kender en funktion der kan extract en ip adresse fra en text streng? F.eks. $subject = "Rapport fra 213.173.242.145 mailserver 4"

hvor funktionen så skal hente IP adressen?

Teksten omkring IP adressen, er ikke nødvendigvis altid ovenstående.
Avatar billede nicklasb Nybegynder
18. januar 2010 - 20:44 #1
$str = 'Rapport fra 213.173.242.145 mailserver 4';
preg_match('/((?:[0-9]{1,2}|[0-1]\d\d|2[0-4]\d|25[0-5])(?:\.(?:[0-9]{1,2}|[0-1]\d\d|2[0-4]\d|25[0-5])){3})/', $str, $match);

echo $match[1];

Du kan også nøjes med et simplere regulært udtryk, hvis fire tal med punktum imellem, kan accepteres som værende en IP adresse.

Hvis strengen skulle indeholde flere IP-adresser, kan du bruge preg_match_all i stedet og hvis fx 1.2.3.4.5 ikke må accepteres som en IP-adresse (fordi der er 5 led i) kan du sætte \s forrest og bagerst i det regulære udtryk.
Avatar billede per-d Nybegynder
20. januar 2010 - 15:41 #2
Hej Nicklas,

Tror der er en fejl i dit script, den sidste del af ipadressen, består nemlig kun af 2 tal når scriptet extracts ip adressen.

F.eks.

213.173.242.145
bliver til
213.173.242.14
Avatar billede nicklasb Nybegynder
20. januar 2010 - 17:34 #3
Ja, selvfølgelig .. den matcher fra venstre mod højre. Flyt [0-9]{1,2} om bagerst den sidste af blokkene, så det regulære udtryk kommer til at se således ud:

((?:[0-9]{1,2}|[0-1]\d\d|2[0-4]\d|25[0-5])(?:\.(?:[0-1]\d\d|2[0-4]\d|25[0-5]|[0-9]{1,2})){3})

En "pænere" løsning kunne også være at lade udtrykket være grådigt - men ovenstående burde virke.
Avatar billede per-d Nybegynder
20. januar 2010 - 22:26 #4
Yep nu ser det også ud til at virke. Du får dine point og jeg lukker det spørgsmål.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester