2015-11-13 39 views
3

我需要在我的數組中格式化一個日期 - 但數組中的日期不會被保存爲數據庫中的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 
+0

它是一個字符串或數組 –

+0

它的一個數組中!但我只需要數組的第一個數據,所以$ reverse_date [1] – Evolution48

+0

發佈您的數組結構 –

回答

1

使用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 
//) 

您不必月份爲縮寫的字符串,但是這是微不足道的通過關聯數組(array(1 => 'Jan', ..., 12 => 'Dec'))添加,和你在有關日期解析的源代碼安全起見克的東西和未來的需求變化。

2

正如你說你正從一個數組的日期按以下格式提交

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

因此,而不是使用str_replacepreg_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 

Demo

+0

我收到此錯誤消息:未找到類'App \ Http \ Controllers \ DateTime' by:$ date = DateTime :: createFromFormat(「[d/M/Y:H:i:s P]」,「$ reverse_date [1]」); echo $ date-> format('d.M.Y H:i:s P'); – Evolution48

+0

您是否在使用Laravel –

+0

您位於名稱空間中,請使用'\ DateTime :: create ...' –

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

+0

它不會用空格替換第一個冒號空格 – billyonecan

+0

冒號?其中 – DevWL

+0

*「我想要下面的輸出:12.Oct.2015(空間)01:10:43 +0200」* - 問題中的最後2行 – billyonecan

相關問題