Match IP (med mask og RegExp)
Hej.Jeg søger en metode at kunne matche en IP maske (f.eks. 192.168.0.*) med en IP (f.eks. 192.168.0.1, 192.168.0.2, osv). Men ved ikke helt hvordan det gøres.
Har prøvet at kigge på nogle regular expressions, men forstår ikke helt så meget af dem.
Indtil videre er jeg kommet hertil med min kode:
<?php
function matchip($mask, $ip) {
if (ereg($mask, $ip)) {
return "$ip matches $mask";
} else {
return "$ip <b>dont</b> matches $mask";
}
}
echo matchip("192.168.0.*", "192.168.0.1")."<br>";
echo matchip("192.168.*.*", "192.168.0.1")."<br>";
echo matchip("192.168.*.2", "192.168.0.1")."<br>";
echo matchip("*.*.0.*", "192.168.0.1")."<br>";
echo matchip("*.webspeed.dk", "en.bruger.på.webspeed.dk")."<br>";
echo matchip("*.*.webspeed.dk", "en.bruger.på.webspeed.dk")."<br>";
echo matchip("*.*speed.dk", "en.bruger.på.webspeed.dk")."<br>";
echo matchip("en.*.*speed.dk", "en.bruger.på.webspeed.dk")."<br>";
echo matchip("en.*.speed.dk", "en.bruger.på.webspeed.dk")."<br>";
?>
Men det giver følgende fejl, så længe * står først i masken:
Warning: ereg(): REG_BADRPT:erepetition-operator operand invalid in C:\Programmer\Apache Group\Apache2\htdocs\matchip.php on line 4
192.168.0.1 dont matches *.*.0.*
Har prøvet at søge rundt her på eksperten, samt på php's side - men har ikke fundet noget.
Nogen som kan/vil forklare mig hvordan det kan løses?