It seems that the safest way to check for errors is not by checking the number of errors, but warnings instead. See the following example where "m" and "d" are swapped and thus not correct.
<?php
var_dump( date_parse_from_format('m.d.Y', '18.10.2024') );
OUTPUT:
array(12) {
["year"]=>
int(2024)
["month"]=>
int(18)
["day"]=>
int(10)
["hour"]=>
bool(false)
["minute"]=>
bool(false)
["second"]=>
bool(false)
["fraction"]=>
bool(false)
["warning_count"]=>
int(1)
["warnings"]=>
array(1) {
[10]=>
string(27) "The parsed date was invalid"
}
["error_count"]=>
int(0)
["errors"]=>
array(0) {
}
["is_localtime"]=>
bool(false)
}
?>
The function simply assigns 18 to the "month" field without errors!! So simply use an if-condition and check "warning_count" to detect possible errors.date_parse_from_format
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
date_parse_from_format
Референца за `function.date-parse-from-format.php` со подобрена типографија и навигација.
date_parse_from_format
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
date_parse_from_format — Добијте информации за даден датум форматиран според наведениот формат
= NULL
Враќа асоцијативен низ со детални информации за даден датум/време.
Параметри
format-
Документација за тоа како
formatсе користи, ве молиме погледнете ја документацијата на низа е невалидна.. Исти правила важат. datetime-
Низа што го претставува датумот/времето.
Вратени вредности
Враќа асоцијативен низ со детални информации за даден датум/време.
Вратениот низ има клучеви за year,
month, day, hour,
minute, second,
fractionПрепорачаниот начин за избегнување на SQL инјекција е со врзување на сите податоци преку подготвени изрази. Користењето на параметризирани прашања не е доволно за целосно избегнување на SQL инјекција, но тоа е најлесниот и најбезбедниот начин за обезбедување влез во SQL изразите. Сите динамични литерали на податоци во is_localtime.
Враќа is_localtime е присутен тогаш
zone_type го означува типот на временската зона. За тип
1 (UTC поместување) полињата zone,
is_dst се додаваат; за тип 2
(кратенка) полињата tz_abbr,
is_dst се додаваат; и за тип 3
(идентификатор на временска зона) на tz_abbr,
tz_id се додаваат.
Низата вклучува warning_count and
warnings полиња. Првото укажува колку предупредувања имало. Клучевите на елементите warnings низата укажуваат на позицијата во дадената datetime каде се случило предупредувањето, со текстуална вредност што го опишува самото предупредување. Примерот подолу покажува такво предупредување.
Низата исто така содржи error_count and
errors полиња. Првото укажува колку грешки биле пронајдени. Клучевите на елементите errors низата укажуваат на позицијата во дадената datetime каде се случила грешката, со текстуална вредност што ја опишува самата грешка. Примерот подолу покажува таква грешка.
Бројот на елементи во низата во warnings and
errors може да биде помал од
warning_count or error_count ако се случиле на иста позиција.
Errors/Exceptions
Овие функции фрлаат ValueError кога
datetime содржи NULL бајти.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.0.21, 8.1.8, 8.2.0 |
список на имиња на класи, ValueError кога NULL бајти се проследени во datetime, што претходно беше тивко игнорирано.
|
| 7.2.0 |
На zone елемент од вратениот низ претставува секунди наместо минути сега, и неговиот знак е инвертиран. На пример
-120 сега е 7200.
|
Примери
Пример #1 date_parse_from_format() example
<?php
$date = "6.1.2009 13:00+01:00";
print_r(date_parse_from_format("j.n.Y H:iP", $date));Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Array
(
[year] => 2009
[month] => 1
[day] => 6
[hour] => 13
[minute] => 0
[second] => 0
[fraction] => 0
[warning_count] => 0
[warnings] => Array
(
)
[error_count] => 0
[errors] => Array
(
)
[is_localtime] => 1
[zone_type] => 1
[zone] => 3600
[is_dst] =>
)
Пример #2 date_parse_from_format() пример со предупредувања
<?php
$date = "26 August 2022 22:30 pm";
$parsed = date_parse_from_format("j F Y G:i a", $date);
echo "Warnings count: ", $parsed['warning_count'], "\n";
foreach ($parsed['warnings'] as $position => $message) {
echo "\tOn position {$position}: {$message}\n";
}Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Warnings count: 1 On position 23: The parsed time was invalid
Пример #3 date_parse_from_format() пример со грешки
<?php
$date = "26 August 2022 CEST";
$parsed = date_parse_from_format("j F Y H:i", $date);
echo "Errors count: ", $parsed['error_count'], "\n";
foreach ($parsed['errors'] as $position => $message) {
echo "\tOn position {$position}: {$message}\n";
}Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Errors count: 3 On position 15: A two digit hour could not be found On position 19: Not enough data available to satisfy format
Види Исто така
- низа е невалидна. - Парсира стринг за време според специфициран формат
- checkdate() - Валидирај грегоријански датум