如何更换数组中的某些内容?

时间:2015-11-13 08:41:38

标签: php arrays replace

我需要在数组中格式化日期 - 但数组中的日期不会在数据库中保存为datetime或类似的东西..我已经从中获取了日期我的服务器切断了它们。

所以我需要使用preg_replacestr_replace

到目前为止,我使用str_replace尝试了什么:

    $reverse_date = str_replace( '[', '' ,$reverse_date);
    $reverse_date = str_replace( ']', '' ,$reverse_date);
    $reverse_date = str_replace( '/', '.' ,$reverse_date); 

但我不想为此使用三行。

如果我print_r这个,我会得到:12.Oct.2015:01:10:43 +0200

之前看起来像这样:[12/Oct/2015:00:37:29 +0200]

所以这没关系!但我仍然不想使用三行,但我不理解preg_replace语法

我想要以下输出:

12.Oct.2015(space)01:10:43 +0200

3 个答案:

答案 0 :(得分:3)

正如您所说,您正在使用以下格式从阵列中获取日期

[12/Oct/2015:00:37:29 +0200]

因此,您可以简单地使用PHP的str_replace功能,而不是使用preg_replaceDateTime::createFromFormat

$date = DateTime::createFromFormat("[d/M/Y:H:i:s P]","[12/Oct/2015:00:37:29 +0200]");
echo $date->format('d.M.Y H:i:s P');//12.Oct.2015 00:37:29 +02:00

Demo

答案 1 :(得分:1)

使用array_features.forEach(function(feature){ // whose project are you var project = feature.get('project'); // decide what you do }); 反汇编日期并合并各个部分以形成您需要的结果:

date_parse

您没有将月份作为缩写字符串,但通过关联数组([40] boris> $date_array = date_parse(" [12/Oct/2015:00:37:29 +0200] "); // array( // 'year' => 2015, // 'month' => 10, // 'day' => 12, // 'hour' => 0, // 'minute' => 37, // 'second' => 29, // 'fraction' => 0, // 'warning_count' => 0, // 'warnings' => array( // // ), // 'error_count' => 2, // 'errors' => array( // 0 => 'Unexpected character', // 27 => 'Unexpected character' // ), // 'is_localtime' => true, // 'zone_type' => 1, // 'zone' => -120, // 'is_dst' => false // ) )添加这一点很简单,并且您可以安全地了解日期解析内容以及将来的更改需要。

答案 2 :(得分:0)

好的我发现如何用preg_replace在一行中做到这一点,但是我喜欢Uchiha的答案,日期格式更多 - 即使他没有使用正则表达式,这可能是最好的方法。

echo preg_replace(['~(?<=\d{4}:\d{2}):~', '~[\[]~', '~[\]]~', '~[\/]~g'],[' ', '', '', '.'],'[12/Oct/2015:00:37:29 +0200]');

12.Oct.2015:00 37:29 +0200