[Regular expression] Format string to "DD/MM/YYYY hh:mm"
[Regular expression] Format string to "DD/MM/YYYY hh:mm"
am 30.03.2006 09:40:36 von Giacomo
Hi everybody,
do you have an regular expression example to check a string in a
"DD/MM/YYYY hh:mm" format (without seconds)?
Bye and thanks,
Giacomo
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: [Regular expression] Format string to "DD/MM/YYYY hh:mm"
am 30.03.2006 15:49:21 von Arie Nugraha
try this :
$date =3D "30/12/1982 15:30"
if (preg_match("/\d{2}\/\d{2}\/\d{4}\s\d{2}:\d{2}/i",$date )) {
echo "Date is valid";
} else {
echo "Date NOT valid";
}
hope it will help you
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: [Regular expression] Format string to "DD/MM/YYYY hh:mm"
am 30.03.2006 15:54:42 von Petar Nedyalkov
--nextPart1554126.BFRPny4QXN
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
On Thursday 30 March 2006 16:49, Arie Nugraha wrote:
> try this :
>
> $date =3D "30/12/1982 15:30"
>
> if (preg_match("/\d{2}\/\d{2}\/\d{4}\s\d{2}:\d{2}/i",$date )) {
> echo "Date is valid";
> } else {
> echo "Date NOT valid";
> }
This is not correct since you don't check the ranges of the day digits, mon=
th=20
digits, etc.
The easiest way to check the string is to explode it by " " (space), then=20
explode the first part by slash and the second by column, and at last check=
=20
the ranges.
A regular expression will be much more complex.
>
> hope it will help you
=2D-=20
Cyberly yours,
Petar Nedyalkov
Devoted Orbitel Fan :-)
PGP ID: 7AE45436
PGP Public Key: http://bu.orbitel.bg/pgp/bu.asc
PGP Fingerprint: 7923 8D52 B145 02E8 6F63 8BDA 2D3F 7C0B 7AE4 5436
--nextPart1554126.BFRPny4QXN
Content-Type: application/pgp-signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.7 (GNU/Linux)
iD8DBQBEK+MmLT98C3rkVDYRAjixAJ4ja+OSUNBmObg90mw8GOw7zfLofwCe PQi7
WKFOEEb3L/xgQKGmUhKIE2E=
=OUX9
-----END PGP SIGNATURE-----
--nextPart1554126.BFRPny4QXN--
Re: [Regular expression] Format string to "DD/MM/YYYY hh:mm"
am 30.03.2006 17:44:16 von Giacomo
Petar Nedyalkov ha scritto:
> This is not correct since you don't check the ranges of the day digits, month
> digits, etc.
> The easiest way to check the string is to explode it by " " (space), then
> explode the first part by slash and the second by column, and at last check
> the ranges.
> A regular expression will be much more complex.
I know, but I would need of a regular expression...=(
Giacomo
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: [Regular expression] Format string to "DD/MM/YYYY hh:mm"
am 31.03.2006 08:59:00 von Balazs Hegedus
Hi,
this regex isn't perfect at all but might do the job. You should
modify the pattern to match the year part against 2037 as a maximum
and also don't forget to checkdate().
$date =3D '30/03/2983 12:00';
$pattern =3D '[0-3][0-9]/[0|1][0-9]/[1|2][0-9]{3,3}\s[0-2][0-9]:[0-5][0=
-9]';
if (preg_match("!^$pattern$!", $date) ===3D 1) {
echo 'date is in valid form';
}
else {
echo 'date form is invalid';
}
?>
Hope it helps,
Balazs
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: [Regular expression] Format string to "DD/MM/YYYY hh:mm"
am 31.03.2006 09:08:15 von Balazs Hegedus
Oops, \s matches any whitespace character, so if you need only space
there you should change \s to space (this way it matches tab too).
Balazs
2006/3/31, Balazs Hegedus :
> Hi,
>
> this regex isn't perfect at all but might do the job. You should
> modify the pattern to match the year part against 2037 as a maximum
> and also don't forget to checkdate().
>
>
>
> $date =3D '30/03/2983 12:00';
> $pattern =3D '[0-3][0-9]/[0|1][0-9]/[1|2][0-9]{3,3}\s[0-2][0-9]:[0-5]=
[0-9]';
> if (preg_match("!^$pattern$!", $date) ===3D 1) {
> echo 'date is in valid form';
> }
> else {
> echo 'date form is invalid';
> }
>
> ?>
>
> Hope it helps,
>
> Balazs
>
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: [Regular expression] Format string to "DD/MM/YYYY hh:mm"
am 31.03.2006 10:03:16 von Giacomo
Balazs Hegedus ha scritto:
>
>
> $date = '30/03/2983 12:00';
> $pattern = '[0-3][0-9]/[0|1][0-9]/[1|2][0-9]{3,3}\s[0-2][0-9]:[0-5][0-9 ]';
I found this:
^((((([0-1]?\d)|(2[0-8]))\/((0?\d)|(1[0-2])))|(29\/((0?[1,3- 9])|(1[0-2])))|(30\/((0?[1,3-9])|(1[0-2])))|(31\/((0?[13578] )|(1[0-2]))))\/((19\d{2})|([2-9]\d{3}))|(29\/0?2\/(((([2468] [048])|([3579][26]))00)|(((19)|([2-9]\d))(([2468]0)|([02468] [48])|([13579][26]))))))\s(([01]?\d)|(2[0-3]))(:[0-5]?\d){2} $
But it accepts second too...can you help me to modify it?
bye and thanks anyway,
--
Giacomo
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
Re: [Regular expression] Format string to "DD/MM/YYYY hh:mm"
am 31.03.2006 16:44:31 von Julien Bonastre
> Balazs Hegedus ha scritto:
>>
>>
>> $date = '30/03/2983 12:00';
>> $pattern =
>> '[0-3][0-9]/[0|1][0-9]/[1|2][0-9]{3,3}\s[0-2][0-9]:[0-5][0-9 ]';
>
>
> I found this:
>
> ^((((([0-1]?\d)|(2[0-8]))\/((0?\d)|(1[0-2])))|(29\/((0?[1,3- 9])|(1[0-2])))|(30\/((0?[1,3-9])|(1[0-2])))|(31\/((0?[13578] )|(1[0-2]))))\/((19\d{2})|([2-9]\d{3}))|(29\/0?2\/(((([2468] [048])|([3579][26]))00)|(((19)|([2-9]\d))(([2468]0)|([02468] [48])|([13579][26]))))))\s(([01]?\d)|(2[0-3]))(:[0-5]?\d){2} $
>
>
> But it accepts second too...can you help me to modify it?
>
> bye and thanks anyway,
damn thats ugly..
Personally I love regex, as some of you on this list may have found out
the hard way..
But in a situation like this where I'd also want to verify the integers
passed I'd simply use the regex to help me split the given datetime
string into a 5/6 element array which I can then perform tests with
Lets not forget:
bool checkdate ( int month, int day, int year )
http://php.mirrors.ilisys.com.au/manual/en/function.checkdat e.php
Helps to ensure the date at least is a valid date and day for the given
month..
Therefore I would do something like:
$dtStr = preg_replace("/^(\d{2})\/(\d{2})\/(\d{2,4})
(\d{1,2}):(\d{2})$/", "$1-$2-$3-$4-$5", $date);
$dtArr = split("-",$dtStr);
if(checkdate($dtArr[1], $dtArr[0], $dtArr[2]) AND $dtArr[3]<=23 AND
$dtArr[3]>=0 AND $dtArr[4]<=59 AND $dtArr[4]>=0) {
//date and time are valid. continue processing..
}
its fairly short, has room to grow [ie changing format acceptance in
regex] to allow for different seperators or even addition of seconds
later down the track easily without having to dive into a untidy regex
pattern.
Let me know how you go...
Best of luck!
---oOo--- Allowing users to execute CGI scripts in any directory should
only be considered if: ... a.. You have no users, and nobody ever visits
your server. ... Extracted Quote: Security Tips - Apache HTTP
Server ---oOo--- ------oOo---------------oOo------ Julien Bonastre
[The_RadiX] The-Spectrum Network CEO ABN: 64 235 749 494
julien@the-spectrum.org
www.the-spectrum.org ------oOo---------------oOo------
--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.1.384 / Virus Database: 268.3.3/298 - Release Date: 30/03/2006
--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php