Frågan 31 jan. 2011 10:37 #1 Tja
Har följande:
if(isset($hash['born_from']) && isset($hash['born_to']) && preg_match("/^(19|20[0-9{2}]+)-([0-9{2}]+)-([0-9{2}]+)$/", $hash['born_from']) && preg_match("/^(19|20[0-9{2}]+)-([0-9{2}]+)-([0-9{2}]+)$/", $hash['born_to'])){
$born_from = $hash['born_from'];
$born_to = $hash['born_to'];
}
Men.. den accepterar inte datum som ligger före år 2000 av någon anledning. Någon som kan tala om vad jag gör för fel?
Tack!
du säger att den skall matchar på 19 eller 20xx:
$dateMatchPattern = "/^((?:19|20)[0-9{2}]+)-([0-9{2}]+)-([0-9{2}]+)$";
if(isset($hash['born_from']) && isset($hash['born_to']) && preg_match($dateMatchPattern, $hash['born_from']) && preg_match($dateMatchPattern, $hash['born_to'])){
$born_from = $hash['born_from'];
$born_to = $hash['born_to'];
}
borde fungera bättre
Hmm, fungerar inte:
$yearPattern = "/^((?:19|20)[0-9{2}]+)-([0-9{2}]+)-([0-9{2}]+)$";
if(isset($_POST['born_from']) && isset($_POST['born_to']) && preg_match($yearPattern, $_POST['born_from']) && preg_match($yearPattern, $_POST['born_to'])){
$born_from = safesql($_POST['born_from']);
$born_to = safesql($_POST['born_to']);
}
Mina datum är i formatet yyyy-mm-dd .
Det kan inte ha fungerat alls bra innan:
^((?:19|20)[0-9]{2})-(\d{2})-(\d{2})$
tog bort [0-9{2}] vilket inte alls är det du tror det är att den matchar två nummer, du skrev att den skall matchar 0-9, { och } minst en gång (+).
Nja, din fungerar på samma sätt som den jag hade från början, endast datum större än 1999-12-31 fungerar.
G GunnarD Medlem sedan juni 2001 4 290 inlägg Denna kod fungerar:
<?php
$strang="Date is 2932-03-02 someday";
$pattern="/[1-2]\d{3}-[0-1]\d-[0-3]\d/";
preg_match($pattern, $strang, $matches);
print_r($matches);
?>
Den fungerar för åren 1000 - 2999.
^((?:19|20)[0-9]{2})-(\d{2})-(\d{2})$
matchar korrekt få ut om jag skriver: 1980-01-31
1 => 1980
2 => 01
3 => 31
så det förstå jag inte varför det inte skulle fungera för dig.
...ledsen att jag är en idiot... felet fanns i en klass och jag ändrade bara på ett ställe hela tiden, ditt första förslag fungerar helt säkert lika bra som dom andra.
Får skylla på att det är midnatt och jag är trött :)
Tack!