Php 如何替换阵列中的某些内容?
我需要格式化数组中的日期-但是数组中的日期不会保存为数据库中的Php 如何替换阵列中的某些内容?,php,arrays,replace,Php,Arrays,Replace,我需要格式化数组中的日期-但是数组中的日期不会保存为数据库中的datetime,或者类似的东西。。我从我的服务器上得到了日期,并将其删除 因此,我需要使用preg\u replace或str\u replace 到目前为止,我使用str\u replace尝试的是: $reverse_date = str_replace( '[', '' ,$reverse_date); $reverse_date = str_replace( ']', '' ,$reverse_date);
datetime
,或者类似的东西。。我从我的服务器上得到了日期,并将其删除
因此,我需要使用preg\u replace
或str\u replace
到目前为止,我使用str\u replace
尝试的是:
$reverse_date = str_replace( '[', '' ,$reverse_date);
$reverse_date = str_replace( ']', '' ,$reverse_date);
$reverse_date = str_replace( '/', '.' ,$reverse_date);
但我不想用三行来表示这个
如果我打印这个,我会得到:12.Oct.2015:01:10:43+0200
在它看起来像这样之前:[12/Oct/2015:00:37:29+0200]
所以这没关系!但是我仍然不想使用三行代码,但是我不理解preg\u replace
语法
我想要以下输出:
12.Oct.2015(space)01:10:43 +0200
使用
date\u 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
// )
您没有将月份作为缩写字符串,但通过关联数组(
array(1=>'Jan',…,12=>'Dec')
)添加月份是很简单的,您可以放心地处理日期解析内容和将来需要的更改 正如您所说,您从以下格式的数组中获取日期
[12/Oct/2015:00:37:29 +0200]
因此,您不必使用str\u replace
或preg\u replace
而只需使用PHP的DateTime::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
好的,我在一行中找到了如何使用preg_replace,但是我更喜欢带有日期格式的Uchiha答案-即使他没有使用正则表达式,这可能是最好的方法
echo preg_replace(['~(?<=\d{4}:\d{2}):~', '~[\[]~', '~[\]]~', '~[\/]~g'],[' ', '', '', '.'],'[12/Oct/2015:00:37:29 +0200]');
echo preg\u replace(['~(?是字符串还是数组是数组!但我只需要数组的第一个数据,$reverse\u date[1]发布你的数组结构我的数组有两个日期:“[12\/Oct\/2015:01:09:51+0200]”,“[12\/Oct\/2015:01:08:50+0200]””,请改为检查我的答案..我收到以下错误消息:该类找不到类“App\Http\Controllers\DateTime:$date=DateTime::createFromFormat(“[d/m/Y:H:I:sp]”,“$reverse\u date[1]”;echo$date->format('d.m.Y H:I:sp'));您使用的是LaravelYou吗?如果您在命名空间中,请使用\DateTime::create…
它不会将第一个冒号替换为带空格的空格冒号?其中“我想要以下输出:12.Oct.2015(space)01:10:43+0200”-问题的最后两行哦,好的,我明白您的意思了,看看这一行-修复