2010-12-10 54 views

回答

1

以下則可以使用explode做功能:

$dt = '07_Dec_2010'; 

list($d,$m,$y) = explode('_',$dt); // split on underscore. 
$dt_new = $d.' '.$m.','.$y;   // glue the pieces. 

你也可以做到這一點使用單個呼叫preg_replace爲:

$dt_new = preg_replace(array('/_/','/_/'),array(' ',','),$dt,1); 

或者也可以:

$dt_new = preg_replace('/^([^_]*)_([^_]*)_(.*)$/',"$1 $2,$3",$dt); 

Ideone link

+1

我喜歡你的第一個,很乾淨。 – ubiquibacon 2010-12-10 07:46:19

0
$new_date = preg_replace('/(\d+)_(\w+)_(\d+)/', '${1} ${2}, ${3}', $date); 

安排$ {1} $ {2} $ {3},只要你喜歡

3

如果你使用PHP 5.3 ,你也可以使用以下方法來解析日期字符串和b)然後將其格式化:

$formatted = date_create_from_format('d_M_Y', '07_Dec_2010')->format('d M, Y'); 

date_create_from_format()也可能是DateTime::createFromFormat()

如果你不使用5.3的是,你可以使用下面的一個)轉換您的字符串轉換成格式strtotime()理解,然後b)格式它,只要你喜歡:

$formatted = date('d M, Y', strtotime(str_replace('_', '-', '07_Dec_2010'))); 

所有這一切說,其他的答案是好的,如果你只是想走動字符串的部分。