我正在尝试更改可能包含日期的字符串,例如
"This is the test string with 22/12/2012. 23/12/12 could anywhere in the string"
我需要更改上面的字符串,以便日期格式为d-m-y,即
"This is the test string with 22-12-2012. 23-12-12 could appear anywhere in the string"
修改 请注意,日期可能会以年为单位改变,即2012年或12月可以在时间使用,即2012年6月20日,2012年6月20日。只有年份可以是2或4位数,休息时间相同。
任何帮助都将受到高度赞赏。
干杯,
答案 0 :(得分:3)
使用preg_replace,如下所示:
$repl = preg_replace('~(\d{2})/(\d{2})/(\d{2,4})~', '$1-$2-$3', $str);
答案 1 :(得分:0)
$string = preg_replace("/([0-9]{2})\/([0-9]{2})\/([0-9]{2,4})/", "$1-$2-$3", $string);
正则表达式将找到3个由2个数字(或2x2 + 1x4)分隔的数字,并用-s分隔相同的数字替换它们。
答案 2 :(得分:0)
您可以尝试这样的事情:
preg_replace('~\b([0-2]?[1-9]|3[01])/(0?[1-9]|1[0-2])/(?=(?:\d\d|\d{4})\b)~', '$1-$2-', $str);
仅应与有效日期匹配。匹配前缀0
不存在的日期,例如4/16/13
如果这不可取消,请删除前两个问号([0-2]?
和0?
)