1

我正在尝试更改可能包含日期的字符串,例如

"This is the test string with 22/12/2012. 23/12/12 could anywhere in the string"

我需要更改上面的字符串,以便日期格式为 dmy 即

"This is the test string with 22-12-2012. 23-12-12 could appear anywhere in the string"

编辑: 请注意,日期可能会改变年份,即 2012 年或 12 年可以在时间使用,即 20/06/2012、20/06/12。只有年份可以是 2 位或 4 位数字,其余部分相同。

任何帮助将不胜感激。

干杯,

4

3 回答 3

3

像这样使用 preg_replace:

$repl = preg_replace('~(\d{2})/(\d{2})/(\d{2,4})~', '$1-$2-$3', $str);

现场演示:http: //ideone.com/7HDNZa

于 2013-04-16T13:53:07.293 回答
0
$string = preg_replace("/([0-9]{2})\/([0-9]{2})\/([0-9]{2,4})/", "$1-$2-$3", $string);

正则表达式将找到 3 批 2 个数字(或 2x2 + 1x4),由 /'s 分隔,并用 -'s 分隔的相同数字替换它们。

于 2013-04-16T13:53:34.817 回答
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?

于 2013-04-16T14:02:04.660 回答