开发者

PHP string / date replace regular expression

I have string in following format 07_Dec_2010, I need to convert it to 07 Dec, 2010

How can 开发者_如何转开发I achieve following using single statement


If you are using PHP 5.3, you could also use the following to a) parse the date string and b) format it however you like:

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

(date_create_from_format() could also be DateTime::createFromFormat())

If you're not using 5.3 yet, you can use the following a) convert your string into a format that strtotime() understands, then b) format it however you like:

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

All that said, the other answers are fine if you just want to move portions of the string around.


You can do it using explode function as:

$dt = '07_Dec_2010';

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

You can also do it using a single call to preg_replace as:

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

Or also as:

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

Ideone link


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

Arrange ${1}, ${2}, ${3} as you like

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜