Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.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_Regex_Date - Fatal编程技术网

php查找并转换字符串中的日期

php查找并转换字符串中的日期,php,regex,date,Php,Regex,Date,我需要找到字符串中的所有日期,并将其转换为格式“d.m.Y”。 我知道如何简单地使用strotime()和date()将日期转换为另一种格式,但如何将所有日期转换为字符串? 比如说, Some text 2018-08-28 11:56:48 .Some text 2017-10-30 07:39:21 将转换为 Some text 28.08.2018 11:56:48 .Some text 30.10.2017 07:39:21 您可以使用匿名回调函数为您转换日期: $input=“一些

我需要找到字符串中的所有日期,并将其转换为格式
“d.m.Y”
。 我知道如何简单地使用
strotime()
date()
将日期转换为另一种格式,但如何将所有日期转换为字符串? 比如说,

Some text 2018-08-28 11:56:48 .Some text 2017-10-30 07:39:21
将转换为

Some text 28.08.2018 11:56:48 .Some text 30.10.2017 07:39:21
您可以使用匿名回调函数为您转换日期:

$input=“一些文本2018-08-28 11:56:48.一些文本2017-10-30 07:39:21”;
回显preg_replace_回调(
“/\d{4}-\d{2}-\d{2}/”,//搜索“XXXX-XX-XX”,其中X表示十进制数字
函数($match)
{
返回日期(“d.m.Y”,strotime($match[0]);//解析并重新格式化匹配的日期
},
美元投入);
()

输出:

Some text 28.08.2018 11:56:48 .Some text 30.10.2017 07:39:21

如果要同时匹配日期和时间,可以使用正则表达式

/\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/

而格式字符串
d.m.Y H:i:s

您可以通过单个正则表达式替换:

见:

  • 模式:
    \b(\d{4})-(\d{2})-(\d{2})\b
  • 替换:
    $3.$2.$1
  • 标志:
    gm