【问题标题】:what regex preg_match_all from this date 2018 October 22?从 2018 年 10 月 22 日这个日期开始,什么正则表达式 preg_match_all?
【发布时间】:2019-03-26 03:46:13
【问题描述】:

从此日期2018 October 22 没有“-”或“/”但带有“”的正则表达式 preg_match_all 是什么? 我想要 preg_match_all 的模式像这样 2018 October 22 ,不像 2018-October-22 ,也不像 2018/10/22

【问题讨论】:

  • 到目前为止您尝试过什么?该日期是您想要的确切日期还是只是一个示例,所以“2020 年 6 月 3 日”可以接受?
  • 是的,只是“2020 年 6 月 3 日”@KenY-N

标签: php regex preg-match preg-match-all


【解决方案1】:

你想要DateTime::createFromFormat。这应该有效:

$date1 = DateTime::createFromFormat('!Y F j', '2018 October 22'); // OK
$date2 = DateTime::createFromFormat('!Y F j', '2018-October-22'); // Fail

! 表示将未解析的字段设置为 1970/1/1 00:00 的对应部分; j 是月份中没有前导零的日期,F 是整月(所以 Feb 无效),Y 是四位数的年份。

【讨论】:

  • 基于 OPs 的问题,我认为你想要的是 'Y F j',而不是 'j F Y'
  • @Nick 确实;我已经修复并使用了 OP 的日期。
【解决方案2】:

检查这个regex

$date='2018-October-22';
$date2='2018/10/22';
$new_date=preg_replace('/[^a-z0-9]/i', ' ', $date);
$new_date2=preg_replace('/[^a-z0-9]/i', ' ', $date2);
print_r($new_date);

print_r($new_date2);

Check output here

【讨论】:

    猜你喜欢
    • 2018-08-19
    • 2019-09-08
    • 2019-09-27
    • 2015-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    相关资源
    最近更新 更多