0

我在 preg_match 中使用了这种字符串格式:

[Day][MonthAbbr] [Date] [Hour]:[Minutes][AM/PM]

example:
ThuDec 27 2:00am

拥有这个 $pattern 和某种代码:

$pattern = "/([A-Z]{2}\w+)([A-Z]{2}\w+)\s+(\w+)\s+(\d+):(\d+)(..)/ims";
$match = array();
if (preg_match($pattern, rtrim($date), $match)) {
    echo '<pre>';
        print_r($match);
    echo '</pre>';
} else {
    echo 'Could not parse date.';
}

我能够从字符串中提取月份、日期、时间等......

但我想知道为什么我想出了“无法解析日期”这个问题。即使传递的值仍然相同..

我比较了值和有错误的值:

ThuDec 27 2:00am
ThuDec 27  4:30am (gives the error)

这是下面的屏幕截图以进行比较:

如您所见,它返回空数组!

我在 preg_match 中使用的模式有问题吗?

4

1 回答 1

1
<?php
$a = "ThuDec 27  4:30am";
$pattern = "/([a-z]{3})([a-z]{3})\s+(\d+)\s+(\d+):(\d+)([a-z]{2})/i";
$match = array();
if (preg_match($pattern, $a, $match)) {
    echo '<pre>';
        print_r($match);
    echo '</pre>';
} else {
    echo 'Could not parse date.';
}
?>

这段代码对我来说效果很好。

于 2012-12-27T12:43:01.737 回答