phpbar.de logo

Mailinglisten-Archive

[php] =?iso-8859-1?Q?=DCberpr=FCfen?= eines Wertes auf integer

[php] =?iso-8859-1?Q?=DCberpr=FCfen?= eines Wertes auf integer

Markus Dobel mdobel_(at)_kawo2.rwth-aachen.de
Mon, 10 Apr 2000 13:19:30 +0200


Stefan Engelhardt wrote:
> 
> Ich will eine Ip-Adresse auf syntaktische Korrektheit überprüfen, also
> x.x.x.x, wobei x eben nur die Wert von 0 bis 255 annehmen darf.
> 
> Leider kenne ich mich mit regulärem Ausdrücken überhaupt nicht aus und habe
> im Moment auch nicht die Zeit, mich da einzuarbeiten. Kann mir jemand auf
> die Sprünge helfen und eine Zeile geben, die ich nur bei mir einbauen muß?

das mit einem regulaeren ausdruck zu machen, ist ziemlich umstaendlich,
der regulaere ausdruck fuer _eine_ zahl zwischen 0 und 255 wuerde in
etwa lauten:

/^0*[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4]$/

eleganter waere es imho, die ip mit dem . zu explodieren und zu schauen,
ob die daraus resultierenden strings zahlen zwischen 0 und 255 sind.

<?
function ip_gueltig ($ip) { 
  $explodiert=explode($ip,".");
  if (count($explodiert) != 4) { 
    /* anzahl der oktette schon flachs */
    return false;
  }
  while(list(,$x)=each($explodiert)) {
    if !(($x==(int)$x) || (($x >= 0) && ($x <= 255))) { 
      /* x ist nicht im bereich 0-255 oder $x ist kein integer*/
      return false;
    }
  }
  return true;
}
?>

so in etwa. jedoch ist dadurch eine ip noch lang nicht gueltig, denn
auch z.b. 0.0.0.0 oder 137.226.251.255 waeren hiermit gueltig.

gruss, markus


php::bar PHP Wiki   -   Listenarchive