是否可以在str_replace中增加时间戳?

时间:2013-08-19 12:00:20

标签: php date timestamp increment str-replace

我有一个我正在重写部分的xml文件,我需要用每个str_replace增加一个毫秒(或秒)的时间戳。我找到了用于递增的教程,以及为时间戳添加秒,但不是为了在循环或每个替换实例中添加时间。

我的替换代码如下所示:

$data = str_replace("</tag1><tag2>", "</tag1><myDate>".date(DATE_ATOM)."</myDate><tag2>", $data);

(澄清一下,文件中有多个上述模式的实例)

替换原样有效,但无法弄清楚每次出现时如何在日期字符串中添加毫秒或秒,因此它们都是唯一的。

谢谢!

更新:

感谢vascowhite指出我正确的方向,我不得不将它与一些DOM操作相结合,但它有效!对于那些想知道的人来说,这是解决方案:

$domsrc = file_get_contents("output.xml");
$MYdom = new DomDocument();
$MYdom->loadXML($domsrc);
$date = new DateTime();
$oneSecond = new DateInterval('PT1S');

$descriptions = $MYdom->getElementsByTagName('myDate');
foreach($descriptions as $nodeDesciption)
{
    $nodeDesciption->nodeValue = $date->format(DATE_ATOM);
    $date->add($oneSecond);
}
$MYdom->save("DOMoutput.xml");

1 个答案:

答案 0 :(得分:0)

我不确定我100%理解你的问题,但我会接受回答。

首先需要获取当前时间并在循环外设置增量周期(1秒): -

$date = new \DateTime();
$oneSecond = new \DateInterval('PT1S');

然后在循环中用以下代码替换当前代码: -

$data = str_replace("</tag1><tag2>", "</tag1><myDate>".$date->format(DATE_ATOM)."</myDate><tag2>", $data);
$date->add($oneSecond);

有关我使用过的DateTime类的信息,请参阅the manual