preg_match字符串,无论格式是否正确

时间:2012-12-27 08:42:13

标签: php regex preg-match

我在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)

以下屏幕截图进行比较:

As you can see, it returns empty array!

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

1 个答案:

答案 0 :(得分: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.';
}
?>

此代码对我来说效果很好。