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.
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.
Kiitos
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.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.