0

我有一个 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");
4

1 回答 1

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 类的信息,请参阅手册。

于 2013-08-19T20:19:39.727 回答