从字符串中提取日期+ PHP

问题描述:

您好,我希望从给定的字符串中获取“2014年1月8日”的日期。从字符串中提取日期+ PHP

Wednesday, 8 January 2014 at 17:40 

如果您可以使用preg_replace将会很好吗?

+2

你至今尝试过什么? –

+0

我还没有想法与preg_replace,但现在usig它$ res = date('M d,Y',strtotime(trim(substr($ res,10,15)))); – alex

+0

我怀疑你需要使用preg_replace,因为它格式良好,不应该有任何问题将它转换为带'strtotime'的日期,然后使用'date'来合成它'$ date = date(“d FY“,strtotime(”2014年1月8日星期三17:40“));' – Breezer

PHP strtotime为 “在” 理解这个词坏的,所以这段代码应该工作而不是返回1970年:

$date = date("d F Y", strtotime(str_replace('at ','',"Wednesday, 8 January 2014 at 17:40"))); 
echo $date; 

你可以根据需要更改格式;只需更改字母d F Y并返回不同值的字母列表可以找到in the manual

与爆炸刚才提出的解决方案()函数:

$str = "Wednesday, 8 January 2014 at 17:40"; 
$ex1 = explode(", ", $str); 
$ex2 = explode(" at", $ex1[1]); 
$value = $ex2[0]; 
echo $value; 

尝试正则表达式模式是这样的:

$str = 'Wednesday, 8 January 2014 at 17:40'; 
$date = preg_replace('/\w+,\s([a-zA-Z0-9\s]+)\sat\s([0-9:]+)/i', '$1', $str); 
echo $date; 

DateTime类让你的生活更简单!

<?php 
$date = DateTime::createFromFormat('l, j F Y \at G:i','Wednesday, 8 January 2014 at 17:40'); 
echo $date->format('j F Y'); //"prints" 8 January 2014 

下面是简单的代码来获得2014 1月8日给你:)

<?php 
    $txt = 'Wednesday, 8 January 2014 at 17:40'; 
preg_match('#(?<=,\s)\d{1,2}\s\w+\s\d{1,4}(?=\sat)#', $txt, $result); 
    ?>