webForumDet fria alternativet

Blir galen på checkdate()

PHP

5 svar · 265 visningar · startad av Peeer

Medlem sedan mars 20025 907 inlägg
Frågan#1
echo checkdate("1c","1a2","2003");

Returnerar 1, dvs true. Inte sjutton är 2003-1c-1a2 ett godkännt datum? Har jag missat något, eller är det bara en bugg att den släpper igenom sådana datum?

Medlem sedan mars 20032 667 inlägg
#2
bool checkdate ( int month, int day, int year)

Den förväntar sig att få numeriska tal som argument och inte strängar. Kan kanske bero på det?

Medlem sedan mars 20025 907 inlägg
#3

Mjo, men då borde den väl ge felmeddelande eller returnera false? Att den returnerar true är hyfsat frustrerande. :/

Medlem sedan sep. 20021 655 inlägg
#4
echo checkdate("1c","1a2","2003");

läses som

echo checkdate(1,1,2003);

Använd is_numeric på argumenten först, om du inte vill att ditt exempel ska gå igenom.

Medlem sedan mars 20025 907 inlägg
#5

Men usch, trodde jag skulle slippa det.
jaja, Tack iaf :)

Medlem sedan mars 20032 667 inlägg
#6

Enligt användarkommentarerna på php.net är inte heller is_numeric() riktigt att lita på. Så du får nog köra ett reguljärt uttryck istället för att kolla så argumenten verkligen är numeriska.

271 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)