PHP字符串/日期替换正则表达式

时间:2010-12-10 07:20:05

标签: php regex

我的字符串格式为07_Dec_2010,我需要将其转换为2010年12月7日

如何使用单一陈述

实现以下目标

3 个答案:

答案 0 :(得分:3)

如果你使用的是PHP 5.3,你也可以使用以下方法来a)解析日期字符串,b)根据你的喜好对其进行格式化:

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

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

如果你还没有使用5.3,你可以使用以下方法:a)将你的字符串转换为strtotime()理解的格式,然后b)格式化你喜欢的格式:

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

所有这一切,如果您只想移动部分字符串,其他答案都可以。

答案 1 :(得分: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

答案 2 :(得分:0)

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

根据需要安排$ {1},$ {2},$ {3}