我有一个我正在重写部分的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");
答案 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。