2013-08-19 36 views
0

我有一個xml文件,我正在重寫其中的一部分,並且我需要用每個str_replace增加一個毫秒(或秒)的時間戳。我找到了用於遞增的教程,併爲時間戳添加了第二個教程,但不是在循環或每個替換實例期間添加時間。是否有可能增加str_replace中的時間戳?

我更換代碼如下所示:

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

(澄清,上面有該文件中的模式的多個實例)

的是作品的替代品,但無法弄清楚如何在每次出現時向日期字符串添加毫秒或秒,因此它們都是唯一的。

謝謝!

UPDATE:

感謝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

我已經搜遍了網絡,找不到處理這兩件事情的任何地方(str_replace和TIME遞增)。我可以找到一個或另一個,但增加解決方案不處理時間。 :( – Stephen

回答

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

+0

感謝您的回覆,我似乎無法完成這項工作。我有一個打開的文件,我一直在重寫所有的數據,然後在最後保存我的文件。但是我怎樣才能使str_replace循環停止在每次發生都要被替換? 我試着用simplexml_load_file重新加載文件,然後應用你的邏輯,但是它給了我錯誤......我現在正在嘗試下去,我會在這裏寫回來。 – Stephen

+0

OMG將您的建議與其他一些DOM閱讀相結合,現在我已經完成了所有工作,謝謝! – Stephen

相關問題