Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Numeromuodon tunnistus (PHP)

ViKiNGi [01.05.2009 22:58:43]

#

Kukahan fiksu osais neuvoa seuraavanlaisessa numero-ongelmassa;

Lähinnä pitäis koodissa tarkistaa, että onko annettu numeromuodossa vai ei.

esim annetaan:
postinumero 12345
-> oikein

postinumero: abcde
-> väärin

Helppo ku mikä, mutta nyt ei juolahda sitten millään mieleen, että millä tuon saikaan tehtyä.

Kiitos vastauksesta etukäteen.

trilog [01.05.2009 23:03:06]

#

https://www.php.net/manual/en/function.is-numeric.php

Antti Laaksonen [01.05.2009 23:03:15]

#

Tässä on yksi ratkaisu:

<?php
$tieto = "12345";
// $tieto = "abcde";
if (preg_match("/^[0-9]+$/", $tieto)) {
    echo "oikein";
} else {
    echo "väärin";
}
?>

Tässä vaaditaan, että merkkijono muodostuu merkeistä 0–9 ja siinä on ainakin yksi merkki.

ViKiNGi [01.05.2009 23:50:36]

#

Kiitos

Metabolix [02.05.2009 11:50:25]

#

Mainitussa postinumerotapauksessa preg_match on parempi vaihtoehto, koska esimerkiksi "+123.45e-6" ei ole kelvollinen postinumero, vaikka sen voikin tulkita luvuksi 123,45·10-6 eli is_numeric hyväksyy sen.

Milo [02.05.2009 11:57:25]

#

Ja kun tiedetään, että postinumero on aina viiden merkin pitunen, tehdään se näin:

<?php
$tieto = "12345";
// $tieto = "abcde";
if (preg_match("/^[0-9]{5}$/", $tieto)) {
    echo "oikein";
} else {
    echo "väärin";
}
?>

Eli Laaksosen + -merkki vaihdettiin {5}, jolloin hyväksytään vain tasan 5 numeerisen merkin toisto.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta