Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.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

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

在php中从普通字符串检索日期

在php中从普通字符串检索日期,php,wordpress,Php,Wordpress,我有一个外部XML文件url,因此需要从该XML数据导入数据。不幸的是,在xml数据中,日程日期值不正确,例如:20082020,但它应该是20/08/2020或任何正确的日期值 我没有机会访问XML,所以,我需要做的就是在PHP中检索从“20082020”到“20/08/2020”或“20-08-2020”的正确日期格式 20082020 => 20-08-2020 但是我需要推进我的项目,所以我使用了简单的正则表达式。所以,任何人都需要它 $date = '20082020'; ec

我有一个外部XML文件url,因此需要从该XML数据导入数据。不幸的是,在xml数据中,日程日期值不正确,例如:20082020,但它应该是20/08/2020或任何正确的日期值


我没有机会访问XML,所以,我需要做的就是在PHP中检索从“20082020”到“20/08/2020”或“20-08-2020”的正确日期格式

20082020 => 20-08-2020
但是我需要推进我的项目,所以我使用了简单的正则表达式。所以,任何人都需要它

$date = '20082020';
echo preg_replace('/^(\d{2})(\d{2})(\d{4})$/', '$1-$2-$3', $date);

我不确定这是否是修复此问题的最佳方法,因此,任何有更好想法的人都可以自由共享。

如果此XML文件中的日期始终采用此格式(ddmmyyy),您可以按如下方式重新格式化:

$col_date = '20082020';
$real_date = date_parse( preg_replace('|(\d{2})(\d{2})(\d{4})|', '\1-\2-\3', $col_date) );

不,正如您所看到的php strotime或任何其他假定将字符串转换为日期格式的函数不使用此字符串值。我已经尝试过:)“不,正如您所看到的php strotime[…]”-正如您所看到的,在该问题下发布了多个答案…使用
DateTime::createFromFormat
,这是微不足道的。“也许我用了不正确的方法”——这就是为什么你向我们展示你的尝试,而不是说“不”或“不起作用”是很重要的
DateTime::createFromFormat('dmY','20082020')
将其解析为DateTime实例,然后您可以使用该实例再次输出您喜欢的任何日期格式。我很乐意使用@CBroe的答案/注释-这是迄今为止您在这里找到的最干净的答案。啊,我明白了,我不知道实际上没有任何XML方面的经验,同样感谢您提供的信息和解决方案:)如果您可以使用简单的字符串函数@DarkBee来解决这个问题,那么为什么要使用regex呢?@DarkBee您有任何有效的理由反对在这里使用regex吗?@DarkBee我不同意您的观点
substr()
不适合这项工作。对于这样的情况,使用regex是非常昂贵的。参见我对其他答案的评论这是@Damocles答案:-D