Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从php中的几个字符串变量中提取多个日期格式_Php_Date - Fatal编程技术网

从php中的几个字符串变量中提取多个日期格式

从php中的几个字符串变量中提取多个日期格式,php,date,Php,Date,我需要从字符串变量中提取日期,日期的格式如下: $date1 = "03/12/2011 (Sat)"; $date2 = "3.12.2011 SAT"; $date3 = "Date: 03/12/2011 "; /* <-- the extra trailing space is intentional */ $date4 = "date:03/12/2011"; $date5 = "date: 03/12/2011"; $date6 = "03/12/2011"; $date7 =

我需要从字符串变量中提取日期,日期的格式如下:

$date1 = "03/12/2011 (Sat)";
$date2 = "3.12.2011 SAT";
$date3 = "Date: 03/12/2011 "; /* <-- the extra trailing space is intentional */
$date4 = "date:03/12/2011";
$date5 = "date: 03/12/2011";
$date6 = "03/12/2011";
$date7 = "13.12.2011 TUE";
$date1=“2011年12月3日(周六)”;
$date2=“3.12.2011周六”;

$date3=“日期:2011年12月3日”/* 有关函数返回的DateTime对象的更多信息,请查看

/**
*从字符串解析日期
*@param string$str未更正的日期字符串
*@return DateTime PHP DateTime对象
*/
功能日期($str)
{
//正则表达式模式将匹配任何格式为dd-mm-yyyy或d-mm-yyyy的日期
//分隔符:句号、空白、破折号
$p='{.*?(\d\d?[\/\.\-]([\d]{2})[\\/\.\-]([\d]{4})。*}';
$date=preg_replace($p,$3-$2-$1',$str);
返回new\DateTime($date);
}
//验证它是否适用于您的值:
$arr=数组(
“2011年12月3日(星期六)”,
“2011年12月3日星期六”,
“日期:2011年3月12日”,/*格式(“Y-m-d”)。“\n”;
}

您可以使用下面的函数,它将匹配您指定的所有变量

function extractDates($mydate)
{
    $date = explode(" ", $mydate);
    $output = $date[0];
    if ($date[0] == "Date:" || $date[0] == "date:")
    {
        $output = $date[1];
    }

    return $output;
}

$date1 = "Date: 03/12/2011";
echo extractDates($date1);
输出将如您所料:“2011年12月3日”

您还可以测试所有字符串:

$date1 = "03/12/2011 (Sat)";
$date2 = "3.12.2011 SAT";
$date3 = "Date: 03/12/2011 "; /* <-- the extra trailing space is intentional */
$date4 = "date:03/12/2011";
$date5 = "date: 03/12/2011";
$date6 = "03/12/2011";
$date7 = "13.12.2011 TUE";
$date1=“2011年12月3日(周六)”;
$date2=“3.12.2011周六”;

$date3=“Date:03/12/2011”;/*谢谢@rdlowrey,但代码中似乎有一些bug,它只在小于10的“day”下工作,例如:“13/12/2011”变成“2011-12-03”和“3.5.2011-THU”->“2011-05-07”我将模式更改为$Date=preg\u replace('/.*([\d]{2})。([\d]{2})。([\d]{4})。*/',“$3-$2-$1',$str现在工作正常:)@丹尼斯,我刚刚更新了正则表达式模式,很抱歉。我忘了让第一个量词ungreedy。我刚刚测试了答案中正确的代码,现在它可以正常工作了。如果一个月的某一天只有一个数字,那么您刚才评论的正则表达式实际上将不起作用。
$date1 = "03/12/2011 (Sat)";
$date2 = "3.12.2011 SAT";
$date3 = "Date: 03/12/2011 "; /* <-- the extra trailing space is intentional */
$date4 = "date:03/12/2011";
$date5 = "date: 03/12/2011";
$date6 = "03/12/2011";
$date7 = "13.12.2011 TUE";